關(guān)于訪問權(quán)限和繼承方式
訪問權(quán)限有三種:public、protected、private
繼承也有三種:public、protected、private,這里不考慮 virtual 繼承。
繼承時(shí)的權(quán)限,不是針對(duì)本類內(nèi)的訪問權(quán)限,而是針對(duì)該派生類的客戶端代碼(包括其派生類)的訪問權(quán)限。
即是,對(duì)于基類中的 public、protected 成員,如果一個(gè)派生類 private 繼承自該基類,則這些成員還是可以在派生類中訪問的,只是不能在該派生類的客戶代碼中被直接訪問,或者在該派生類的派生類中直接訪問。
也就是說,繼承的方式是針對(duì)派生類的客戶端代碼來講的,對(duì)派生類內(nèi)部不起作用,不管是 public、protected、private 繼承,派生類中總是可以訪問基類中的 public、protected 成員,基類中的 private 成員永遠(yuǎn)不能在派生類中直接訪問,不論通過哪種方式。
歸納一下:
成員訪問權(quán)限 繼承方式 派生類中能否訪問 派生類的派生類中 派生類的客戶端代碼
public public 能 能 能
public protected 能 能 不能
public private 能 不能 不能
protected public 能 能 不能
protected protected 能 能 不能
protected private 能 不能 不能
private public 不能 不能 不能
private protected 不能 不能 不能
private private 不能 不能 不能
從這個(gè)表中,我們更能清除地看到成員訪問權(quán)限和繼承方式之間的組合,對(duì)派生類中的訪問、派生類的派生類中的訪問、派生類的客戶端代碼的訪問控制情況。
繼承的方式是在原有基類訪問權(quán)限的基礎(chǔ)上,給在派生類的訪問權(quán)限又加了一個(gè)效應(yīng)。取兩個(gè)中最嚴(yán)格的那個(gè)權(quán)限,這個(gè)取得的權(quán)限是派生類成員的訪問權(quán)限,而這種訪問權(quán)限對(duì)派生類的客戶端代碼和派生類的派生類代碼其訪問控制作用。
posted on 2011-05-27 00:20
unixfy 閱讀(462)
評(píng)論(0) 編輯 收藏 引用