Java類(lèi)中的限定詞
java語(yǔ)言中有四種不同的限定詞,提供了四種不同的訪問(wèn)權(quán)限。
1) private
類(lèi)中限定為private的成員,只能被這個(gè)類(lèi)本身訪問(wèn)。
如果一個(gè)類(lèi)的構(gòu)造方法聲明為private,則其它類(lèi)不能生成該類(lèi)的一個(gè)實(shí)例。
2) default
類(lèi)中不加任何訪問(wèn)權(quán)限限定的成員屬于缺省的(default)訪問(wèn)狀態(tài),可以被這個(gè)類(lèi)本身和同一個(gè)包中的類(lèi)所訪問(wèn)。
3) protected
類(lèi)中限定為protected的成員,可以被這個(gè)類(lèi)本身、它的子類(lèi)(包括同一個(gè)包中以及不同包中的子類(lèi))和同一個(gè)包中的所有其他的類(lèi)訪問(wèn)。
4) public
類(lèi)中限定為public的成員,可以被所有的類(lèi)訪問(wèn)。
表3-1列出了這些限定詞的作用范圍。
【表3-1】 java中類(lèi)的限定詞的作用范圍比較
=============================================================
|| 同一個(gè)類(lèi) 同一個(gè)包的類(lèi) 不同包的子類(lèi) 不同包非子類(lèi) ||
|| private * ||
|| default * * ||
|| protected * * * ||
|| public * * * * ||
=============================================================
說(shuō)明:上面這個(gè)表,看起來(lái)很簡(jiǎn)單,而且也很容易記憶,但是卻蘊(yùn)含著極為豐富的信息,可以從不同的角度來(lái)理解上面的這個(gè)表。
比如在同一個(gè)類(lèi)里面時(shí),四個(gè)關(guān)鍵詞都相當(dāng)于是public,可以不在乎限定詞是什么;在同一個(gè)包里面時(shí),除了private限定詞外,所有的限定詞的作用都完全等同于public。我們經(jīng)常會(huì)思考這樣一個(gè)問(wèn)題:一個(gè)類(lèi)的屬性和方法是否對(duì)外可見(jiàn)?這個(gè)問(wèn)題描述中提到的“可見(jiàn)”二字,當(dāng)環(huán)境為“非子類(lèi)”時(shí),說(shuō)白了就是我們能否通過(guò)實(shí)例化這個(gè)類(lèi)后,用一個(gè)對(duì)象把這個(gè)類(lèi)的這些字段或者方法給“點(diǎn)”出來(lái),即“某對(duì)象.某屬性(或某方法)”。因?yàn)橥ǔN覀兌际窃诓煌沫h(huán)境下操作的,比如我們會(huì)import很多系統(tǒng)的包中的類(lèi),諸如“import java.awt.*;”這樣的語(yǔ)句,因此我們使用這些包中的類(lèi)時(shí),它們對(duì)我們的可見(jiàn)也就僅僅局限在使用“public”限定詞修飾的屬性或方法上了,因此大家往往會(huì)誤以為只有public的東西才能點(diǎn)出來(lái),實(shí)則不然,當(dāng)我們?cè)谕粋€(gè)包中的非子類(lèi)中也可以把除了private修飾的東西之外的所有屬性和方法給“點(diǎn)”出來(lái)。其實(shí)對(duì)于“點(diǎn)”這個(gè)運(yùn)算,可以分兩個(gè)角度去理解,既然能用到“點(diǎn)”操作,那就代表了我們使用的環(huán)境應(yīng)該是“非子類(lèi)”,非子類(lèi)又可以分為“包內(nèi)”和“非包內(nèi)”,對(duì)于“包內(nèi)”,只要不是private修飾的東西都能點(diǎn)出來(lái);對(duì)于“非包內(nèi)”則只能是public的東西才能點(diǎn)出來(lái);;;如果是在“子類(lèi)”中操作時(shí),大家可以思考一下,我們還用“點(diǎn)”操作嗎?顯然不用了,因?yàn)樵谧宇?lèi)中,父類(lèi)中定義的東西只要可見(jiàn)的話都可以被你拿過(guò)來(lái)用,因此根本就用不到點(diǎn)操作,當(dāng)然這里也要分“包內(nèi)”和“非包內(nèi)”。對(duì)于default限定詞,我們不能顯示的使用它來(lái)定義屬性或方法,只要我們?cè)诙x屬性或方法的前面什么限定詞都不加,就默認(rèn)的使用了default限定詞。
posted on 2008-01-07 14:37 so true 閱讀(2373) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Java