首先還是來(lái)看看我們自定義的數(shù)據(jù)類(lèi)型employee,在應(yīng)用的時(shí)候它和int類(lèi)型的數(shù)據(jù)沒(méi)什么兩樣,一樣的需要?jiǎng)?chuàng)建變量(對(duì)象),只不過(guò)前者是咱自己定義的,而后這是它內(nèi)置的。Employee這個(gè)類(lèi)中有許多屬性,也有許多方法。而此時(shí),我們不能直接用我們所創(chuàng)建出來(lái)的對(duì)象調(diào)用它的屬性進(jìn)行修改。因?yàn)樗莗rivate受保護(hù)類(lèi)型的!我要想修改我的姓名我就要用對(duì)象調(diào)用setName()這個(gè)方法,而我想得到我的姓名就要調(diào)用getName()這個(gè)方法。我們完全是按照航線來(lái)行走的,這個(gè)航線就是“對(duì)象調(diào)方法,方法改屬性”
好的,我真的相信你已經(jīng)明白了這是怎么一回事兒了!呵呵!仰起航帆,繼續(xù)前行!
現(xiàn)在讓我們一起來(lái)看看workstation這個(gè)類(lèi)。這是個(gè)主類(lèi),和C++中的main()函數(shù)的味道差不多。其中,在JAVA中,一個(gè)文件只允許有而且必須有一個(gè)主類(lèi),這個(gè)主類(lèi)用public來(lái)聲明!他就跟C++中必須要有一個(gè)main()函數(shù)是一樣的。
讓我們來(lái)看看這個(gè)類(lèi)中的第一條語(yǔ)句!private employee jingwei ;這條語(yǔ)句的作用是聲明一個(gè)employee的對(duì)象jingwei(在C++中就不用聲明了)。我想要和你說(shuō)的是“聲明”與“定義”之間的區(qū)別。聲明只是告訴計(jì)算機(jī)將要有這樣的一個(gè)變量(對(duì)象),在內(nèi)存中它并不為這個(gè)變量(對(duì)象)分配內(nèi)存!而只有在定義的時(shí)候才會(huì)給這個(gè)變量(對(duì)象)分配內(nèi)存。(需要說(shuō)明一下的是init()方法是完成初始化操作的,在此處定義對(duì)象,為對(duì)象分配內(nèi)存。start()方法用來(lái)啟動(dòng)瀏覽器的主線程,paint()方法來(lái)顯示Apple的界面。這些是Applet程序所需的,至于Application程序就不需要了,當(dāng)然了,C++中也不需要他們。關(guān)于他們的詳細(xì)內(nèi)容清參閱相關(guān)書(shū)籍)
緊接著就開(kāi)始定一個(gè)對(duì)象了,對(duì)jingwei這個(gè)對(duì)象進(jìn)行操作才會(huì)有實(shí)際的意義。千萬(wàn)不要有這種想法:“試圖對(duì)類(lèi)進(jìn)行操作!”就像前面我說(shuō)的,電視機(jī)原理不能看電視一樣!這是毫無(wú)意義的!看這條語(yǔ)句jingwei = new employee();它的意思就是定義一個(gè)employee類(lèi)型的對(duì)象jingwei。此時(shí),我想告訴你的是:“jingwei這個(gè)對(duì)想擁有了些什么”。它擁有了類(lèi)所描述的所有的屬性及方法。下面我一一給你列出來(lái):
/*所有的employee對(duì)象都擁有這些屬性。每創(chuàng)建一個(gè)對(duì)象就會(huì)從新分配一塊內(nèi)存來(lái)存放相應(yīng)對(duì)象的這些屬性。我的意思是每個(gè)對(duì)象都有自己“獨(dú)特”的一份*/
private String name; //員工姓名
private int age; //員工年齡
private char sex; //員工性別
private float emolument; //員工薪水
private boolean lunch; //員工午餐
/*所有的employee對(duì)象都擁有這些方法。但在內(nèi)存中只有一份*/
public void heater(){ //這個(gè)方法是用來(lái)加工員工的午餐
lunch = true;
}
public void setName(String a){ //這個(gè)方法是修改員工的姓名
name= a;
}
public String getName(){ //這個(gè)方法是得到員工的姓名
return name;
}
/*但是,實(shí)際上在創(chuàng)建jingwei這個(gè)對(duì)象時(shí)計(jì)算機(jī)只給這個(gè)對(duì)象的所有的屬性分配了內(nèi)存,而并沒(méi)有給方法分配內(nèi)存。方法只有一個(gè),是屬于所有的對(duì)象的,所以無(wú)論創(chuàng)建了多少個(gè)對(duì)象,計(jì)算機(jī)只會(huì)為一個(gè)方法分配一塊內(nèi)存。*/
我想我還是舉個(gè)例子吧,不然你非暈倒不可。呵呵!
看我這條語(yǔ)句“private boolean lunch;”公司不管午餐,每個(gè)員工都需要帶飯。我們現(xiàn)在這樣想,公司的空間是所有的內(nèi)存容量,你的辦公桌就是計(jì)算機(jī)中的內(nèi)存中的一部分(每個(gè)員工都有一份,是在創(chuàng)建對(duì)象時(shí)分配的)。你把午飯帶到了公司,放在了你的辦公桌上。“午飯”占據(jù)了你的辦公桌的一角(占了你自己“對(duì)象”的一塊內(nèi)存容量)。這份午飯只屬于你自己,同樣別人的也只屬于她自己!所以每個(gè)員工(對(duì)象)都需要一快空間(內(nèi)存)來(lái)存放自己的午餐(屬性)。在計(jì)算機(jī)中也是這樣的,每創(chuàng)建一個(gè)對(duì)象,就會(huì)在內(nèi)存中從新分配一塊內(nèi)存來(lái)放“午餐——lunch”這個(gè)屬性(對(duì)象所擁有的所有的屬性)。
計(jì)算機(jī)只會(huì)為對(duì)象的屬性分配內(nèi)存。因?yàn)槊總(gè)對(duì)象的都不一樣!就像你往公司帶的午飯和我往公司帶的午飯不一樣是一個(gè)道理!但方法就不同了。早晨帶的飯中午就涼了,你需要用微波爐來(lái)加熱。微波爐可不用你帶,公司就有(只占公司的一塊空間),它放在了午餐桌上。你想想,微波爐屬于誰(shuí)的?它屬于所有員工的!因?yàn)槊總(gè)員工都可以用它。而不必每個(gè)員工都帶一份。由此可見(jiàn),每個(gè)員工(對(duì)象)都有一份午飯(屬性),但所有的員工(對(duì)象)只一個(gè)微波爐(方法)。所有的員工(對(duì)象)都可以通過(guò)這個(gè)微波爐(方法)來(lái)改變自己午餐(屬性)的冷熱狀態(tài)。殊途同歸!在計(jì)算機(jī)中也就是這樣,方法只有一份,供所有的對(duì)象使用!而屬性是每個(gè)對(duì)象一份,因?yàn)槊總(gè)對(duì)象的都不一樣。別和我說(shuō)你還不明白,不然我會(huì)撞墻的,呵呵:)
出處:相關(guān)論壇
責(zé)任編輯:冰點(diǎn)的冰藍(lán)色
上一頁(yè) 深入探討面向?qū)ο?/a> 下一頁(yè) 構(gòu)造函數(shù)、默認(rèn)構(gòu)造函數(shù)、 缺省構(gòu)造函數(shù)
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|