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