关于继承方式和访问权限
注:本文摘自unixfy博文,感謝作者整理!
關于訪問控制權限和繼承方式關于訪問權限和繼承方式
訪問權限有三種:public、protected、private
繼承也有三種:public、protected、private,這里不考慮 virtual 繼承。
繼承時的權限,不是針對本類內的訪問權限,而是針對該派生類的客戶端代碼(包括其派生類)的訪問權限。
即是,對于基類中的 public、protected 成員,如果一個派生類 private 繼承自該基類,則這些成員還是可以在派生類中訪問的,只是不能在該派生類的客戶代碼中被直接訪問,或者在該派生類的派生類中直接訪問。
也就是說,繼承的方式是針對派生類的客戶端代碼來講的,對派生類內部不起作用,不管是 public、protected、private 繼承,派生類中總是可以訪問基類中的 public、protected 成員,基類中的 private 成員永遠不能在派生類中直接訪問,不論通過哪種方式。
歸納一下:
成員訪問權限??????? 繼承方式??????? 派生類中能否訪問??????? 派生類的派生類中??????? 派生類的客戶端代碼
public????????????? public????????? 能????????????????????? 能????????????????????? 能
public????????????? protected?????? 能????????????????????? 能????????????????????? 不能
public????????????? private???????? 能????????????????????? 不能??????????????????? 不能
protected?????????? public????????? 能????????????????????? 能????????????????????? 不能
protected?????????? protected?????? 能????????????????????? 能????????????????????? 不能
protected?????????? private???????? 能????????????????????? 不能??????????????????? 不能
private???????????? public????????? 不能??????????????????? 不能??????????????????? 不能
private???????????? protected?????? 不能??????????????????? 不能??????????????????? 不能
private???????????? private???????? 不能??????????????????? 不能??????????????????? 不能
從這個表中,我們更能清除地看到成員訪問權限和繼承方式之間的組合,對派生類中的訪問、派生類的派生類中的訪問、派生類的客戶端代碼的訪問控制情況。
繼承的方式是在原有基類訪問權限的基礎上,給在派生類的訪問權限又加了一個效應。取兩個中最嚴格的那個權限,這個取得的權限是派生類成員的訪問權限,而這種訪問權限對派生類的客戶端代碼和派生類的派生類代碼其訪問控制作用。
轉載于:https://www.cnblogs.com/lixiaohui-ambition/archive/2012/07/13/2590023.html
總結
以上是生活随笔為你收集整理的关于继承方式和访问权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下mysql新建账号及权限设置
- 下一篇: UINavigationbar的背景修改