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