相信很多小伙伴學(xué)Java的時(shí)候都是戰(zhàn)術(shù)開頭:HelloWorld!
首先,創(chuàng)建一個(gè)類,然后寫一個(gè)主方法,最后打印輸出,ojbk完事兒。等到我們學(xué)面向?qū)ο蟮臅r(shí)候不得不去了解一下什么是類,什么是對(duì)象,他倆是啥關(guān)系。
關(guān)于面向?qū)ο?,網(wǎng)上那個(gè)寫的很好的例子已經(jīng)被我抄到C語言與Java的區(qū)別那篇了,感興趣的小伙伴可以點(diǎn)左上角的菜單去查看。
那么類和對(duì)象到底是什么呢?類就是有某些共同特征的實(shí)體的集合;對(duì)象就是類的實(shí)例,一個(gè)對(duì)象當(dāng)然就是一個(gè)類的實(shí)例。來,上例子:有一句話叫物以類聚人以群分,咱們拿人來舉例,人類或者說人當(dāng)然是一個(gè)類,因?yàn)槟阏f人的時(shí)候它不是一個(gè)實(shí)體,也就是不知道說的是哪個(gè)人;但是說人的時(shí)候我們都知道特征,有鼻子有眼的,能制造和使用工具。還記得初一英語的第一篇對(duì)話不,I'm
Kangkang are you
Michael?這里的Kangkang和Michael是不是對(duì)象,當(dāng)然是,Kangkang有鼻子有眼的吧。不能說人家不會(huì)制造和使用工具吧,簡單的也算,符合人這個(gè)類的特征,又是一個(gè)實(shí)例,所以人家是一個(gè)對(duì)象,那Michael呢?當(dāng)然也是一個(gè)對(duì)象。
類和對(duì)象的關(guān)系該亮出來了,類是對(duì)象的抽象,對(duì)象是類的實(shí)例
。啥意思呢,首先我不知道小伙伴對(duì)于抽象的理解是不是和我以前一樣,具體的反義詞啊,很難描述的東西啊,其實(shí)這里的抽象簡單來說就是抽出像的部分,你看Kangkang有鼻子有眼的,會(huì)走路、吃飯、睡覺......那Michael也是,你也是,我也是;每一個(gè)人都有的特點(diǎn)抽取出來歸為人類。那對(duì)象是類的實(shí)例就應(yīng)該很好理解了,Kangkang這個(gè)對(duì)象是不是人的一個(gè)實(shí)例?當(dāng)然是,你家的貓是不是貓的一個(gè)實(shí)例?毛茸茸的,還會(huì)喵喵叫,當(dāng)然是,那別人家養(yǎng)的貓自然也是貓類的一個(gè)實(shí)例。
這里再說一下對(duì)象的屬性和方法,然后咱們就上一段代碼,對(duì)象包含屬性和方法,屬性就是對(duì)象的一些特征,比如:名字,性別,身高;方法可以理解為對(duì)象的某些行為,比如給吃飯,睡覺,學(xué)習(xí)。來上一段代碼:
1 package test; 2 3 public class Person { 4 5 int age;// age屬性 6 String
name;// name屬性 7 8 // 定義一個(gè)睡覺方法 9 public void sleep() { 10
System.out.println("睡覺"); 11 } 12 13 // 定義一個(gè)學(xué)習(xí)方法 14 public void study() { 15 //
方法中可以加上屬性 16 System.out.println(name + "學(xué)習(xí)"); 17 } 18 19 public static void
main(String[] args) {20 21 // 創(chuàng)建一個(gè)Person類的對(duì)象p1 22 Person p1 = new Person(); 23
24 // 通過 對(duì)象.屬性 來給屬性賦值 25 p1.name = "Kangkang"; 26 p1.age = 18; 27
System.out.println(p1.name);28 29 //通過對(duì)象.方法來調(diào)用方法 30 p1.sleep(); 31 32 } 33 34
}
執(zhí)行結(jié)果:
Kangkang
睡覺
不知道有沒有初學(xué)者想問為啥Kangkang在睡覺前面打印,結(jié)果中的Kangkang是直接在main方法中打印p1對(duì)象的name屬性得到的,而睡覺則是p1對(duì)象調(diào)用的前面的sleep方法,在執(zhí)行調(diào)用的方法的時(shí)候打印的。
我們來給創(chuàng)建對(duì)象那一句拿出來看看
?這個(gè)類只能創(chuàng)建一個(gè)對(duì)象嗎?當(dāng)然不是,只要你想要多少new多少
1 package test; 2 3 public class Person { 4 5 int age;// age屬性 6 String
name;// name屬性 7 8 // 定義一個(gè)睡覺方法 9 public void sleep() { 10
System.out.println("睡覺"); 11 } 12 13 // 定義一個(gè)學(xué)習(xí)方法 14 public void study() { 15 //
方法中可以加上屬性 16 System.out.println(name + "學(xué)習(xí)"); 17 } 18 19 public static void
main(String[] args) {20 21 // 創(chuàng)建一個(gè)Person類的對(duì)象p1 22 Person p1 = new Person(); 23
24 // 通過 對(duì)象.屬性 來給屬性賦值 25 p1.name = "Kangkang"; 26 p1.age = 18; 27
System.out.println(p1.name);28 29 //通過對(duì)象.方法來調(diào)用方法 30 p1.sleep(); 31 32 //
再創(chuàng)建一個(gè)對(duì)象p2 33 Person p2 = new Person(); 34 //給屬性賦值 35 p2.name ="特朗普"; 36 p2.age
= 3; 37
//p2調(diào)用study方法 38 p2.study();
//p1調(diào)用study方法 39 p1.study(); 40 41 } 42 43 }
執(zhí)行結(jié)果:
Kangkang
睡覺
特朗普學(xué)習(xí)
Kangkang學(xué)習(xí)
study()方法的打印語句中我們加了一個(gè)屬性name p2調(diào)用時(shí)打印的是p2的name屬性 特朗普+學(xué)習(xí),p1調(diào)用時(shí)打印的是p1的name屬性
Kangkang+學(xué)習(xí)
所以我們通過對(duì)象調(diào)用方法時(shí),方法中的屬性就是當(dāng)前對(duì)象的屬性。
熱門工具 換一換