protected:“友好的一種” |
| 發(fā)布時(shí)間: 2012/9/1 17:13:05 |
|
protected(受到保護(hù)的)訪(fǎng)問(wèn)指示符要求大家提前有所認(rèn)識(shí)。首先應(yīng)注意這樣一個(gè)事實(shí):為繼續(xù)學(xué)習(xí)本書(shū)一 然,如果在相同的包里進(jìn)行繼承,那么繼承獲得的包能夠訪(fǎng)問(wèn)所有“友好”的成員。有些時(shí)候,基礎(chǔ)類(lèi)的創(chuàng) 建者喜歡提供一個(gè)特殊的成員,并允許訪(fǎng)問(wèn)衍生類(lèi)。這正是protected 的工作。若往回引用5.2.2 小節(jié) “public:接口訪(fǎng)問(wèn)”的那個(gè)Cookie.java 文件,則下面這個(gè)類(lèi)就不能訪(fǎng)問(wèn)“友好”的成員: //: ChocolateChip.java // Can't access friendly member // in another class import c05.dessert.*; public class ChocolateChip extends Cookie { public ChocolateChip() { System.out.println( "ChocolateChip constructor"); } public static void main(String[] args) { ChocolateChip x = new ChocolateChip(); //! x.foo(); // Can't access foo } } ///:~ 對(duì)于繼承,值得注意的一件有趣的事情是倘若方法foo()存在于類(lèi)Cookie 中,那么它也會(huì)存在于從Cookie 繼承的所有類(lèi)中。但由于foo()在外部的包里是“友好”的,所以我們不能使用它。當(dāng)然,亦可將其變成 public。但這樣一來(lái),由于所有人都能自由訪(fǎng)問(wèn)它,所以可能并非我們所希望的局面。若象下面這樣修改類(lèi) Cookie: public class Cookie {
public Cookie() { 本文出自:億恩科技【www.liangzihuyu.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |
京公網(wǎng)安備41019702002023號(hào)