點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程第五章匯總
5.1 什么是類(lèi)?
正像你在第1章中看到的,類(lèi)是對(duì)一類(lèi)特定對(duì)象的規(guī)格說(shuō)明。我們可以用類(lèi)定義創(chuàng)建一類(lèi)對(duì)象,通過(guò)創(chuàng)建對(duì)象來(lái)組合所有屬于該類(lèi)的組件。
如果你感覺(jué)這些太抽象了,請(qǐng)你回顧一下在上一章我們用過(guò)的String類(lèi)。這是一個(gè)字符串的定義,它很一遇理解,其中擁有需要內(nèi)置的所有操作。String對(duì)象是一個(gè)不可缺少的類(lèi),它使得在程序中對(duì)字符串處理變得跟家容易。
對(duì)于字符串來(lái)說(shuō),String類(lèi)是最復(fù)雜的。它力求在任何程序中都便于應(yīng)用。實(shí)際上,其中包含的有關(guān)String對(duì)象的操作功能,覆蓋了你使用字符串的所有情形。在大多數(shù)情況下,你自己的類(lèi)不需要這樣復(fù)雜。通常你定義的類(lèi)只適用于你的特定應(yīng)用?此品浅(fù)雜的對(duì)象,比如,Plane(飛機(jī))或者Person人,可能用一個(gè)很簡(jiǎn)單的類(lèi)說(shuō)明就能夠很好地滿(mǎn)。
為了進(jìn)一步說(shuō)明這兩種變量之間的區(qū)別,請(qǐng)看下面的示意圖。
這個(gè)示意圖是對(duì)類(lèi)Sphere的圖解,該類(lèi)中包含一個(gè)類(lèi)變量PI和四個(gè)實(shí)例變量radius、xCenter、yCenter和zCenter .globe和ball兩個(gè)對(duì)象都擁有它們自己的一套變量:radius xCenter, yCenter和zCenter,然而,它們兩個(gè)共享類(lèi)變量PI的惟一一個(gè)副本。
在類(lèi)定義中,為什么需要兩種變量呢?由于實(shí)例變量是區(qū)分每個(gè)對(duì)象的參數(shù),所以很明顯,它是必要的。球的半徑和球心坐標(biāo)是確定一個(gè)特定的Sphere對(duì)象大小及空間位置的基本數(shù)據(jù)。然而,雖然變量PI也是球的一個(gè)基本參數(shù),例如可以用它來(lái)計(jì)算球的體積,然而,它的值永遠(yuǎn)不會(huì)變化,所以每個(gè)對(duì)象存儲(chǔ)一個(gè)PI是一種浪費(fèi)。順便說(shuō)一句,在標(biāo)準(zhǔn)類(lèi)Math中也可以得到這個(gè)值,所以在本例中聲明這個(gè)變量顯得有些多余,但是你可以從中獲得這種常規(guī)的用法。由此,類(lèi)變量的一種用法就是保存一個(gè)兀這樣的對(duì)所有對(duì)象公用的常數(shù)值。
類(lèi)變量的另一種用法是用來(lái)跟蹤一個(gè)類(lèi)中的所有對(duì)象共有的值,即使沒(méi)有對(duì)象定義,也希望它有效。例如,如果你想在你程序中保存已經(jīng)建立了多少個(gè)類(lèi)對(duì)象的統(tǒng)計(jì),就要定義一個(gè)類(lèi)變量來(lái)存儲(chǔ)這個(gè)統(tǒng)計(jì)值。由于你希望在沒(méi)有對(duì)象被聲明的時(shí)候,count變量也可以應(yīng)用,所以使用類(lèi)變量是不可避免的。
類(lèi)定義中的方法
類(lèi)中定義的方法提供了可以對(duì)類(lèi)定義中說(shuō)明的變量所實(shí)施的操作。與類(lèi)定義中的變量類(lèi)似,方法也有兩種形式:實(shí)例方法(instance method)和類(lèi)方法( class method ).即使在類(lèi)中不存在任何對(duì)象時(shí),你也可以執(zhí)行類(lèi)方法,而實(shí)例方法則只能被一個(gè)關(guān)聯(lián)的特定對(duì)象所執(zhí)行,因此如果沒(méi)有對(duì)象存在,就不能執(zhí)行實(shí)例方法。與類(lèi)變量一樣,類(lèi)方法也要使用關(guān)鍵字static聲明,所以它們有時(shí)也被稱(chēng)作靜態(tài)方法(static methods)
由于沒(méi)有對(duì)象存在時(shí),類(lèi)方法也可以被執(zhí)行,所以它們不能引用實(shí)例變量。仔細(xì)考慮一下,你會(huì)覺(jué)得這一點(diǎn)是相當(dāng)合乎情理的,嘗試對(duì)可能不存在的變量進(jìn)行操作,一定會(huì)引發(fā)錯(cuò)誤。事實(shí)上,Java編譯器不會(huì)允許你做這樣的嘗試。如果你在一個(gè)類(lèi)方法的代碼中引用了一個(gè)實(shí)例變量,將不會(huì)通過(guò)編譯,并得到一個(gè)錯(cuò)誤信息。正像你所看到的,一個(gè)Java應(yīng)用程序開(kāi)始執(zhí)行的方法main()必須總是被聲明為靜態(tài)(static)的,F(xiàn)在,這個(gè)原因應(yīng)該顯而易見(jiàn)了。
相關(guān)推薦:
2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門(mén)教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |