关于继承方式和访问权限
2012-08-24 17:15
260 查看
注:本文摘自unixfy博文,感谢作者整理!
关于访问控制权限和继承方式
关于访问权限和继承方式
访问权限有三种:public、protected、private
继承也有三种:public、protected、private,这里不考虑 virtual 继承。
继承时的权限,不是针对本类内的访问权限,而是针对该派生类的客户端代码(包括其派生类)的访问权限。
即是,对于基类中的 public、protected 成员,如果一个派生类 private 继承自该基类,则这些成员还是可以在派生类中访问的,只是不能在该派生类的客户代码中被直接访问,或者在该派生类的派生类中直接访问。
也就是说,继承的方式是针对派生类的客户端代码来讲的,对派生类内部不起作用,不管是 public、protected、private 继承,派生类中总是可以访问基类中的 public、protected 成员,基类中的 private 成员永远不能在派生类中直接访问,不论通过哪种方式。
归纳一下:
从这个表中,我们更能清除地看到成员访问权限和继承方式之间的组合,对派生类中的访问、派生类的派生类中的访问、派生类的客户端代码的访问控制情况。
继承的方式是在原有基类访问权限的基础上,给在派生类的访问权限又加了一个效应。取两个中最严格的那个权限,这个取得的权限是派生类成员的访问权限,而这种访问权限对派生类的客户端代码和派生类的派生类代码其访问控制作用。
关于访问控制权限和继承方式
关于访问权限和继承方式
访问权限有三种: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 | 否 | 否 | 否 |
继承的方式是在原有基类访问权限的基础上,给在派生类的访问权限又加了一个效应。取两个中最严格的那个权限,这个取得的权限是派生类成员的访问权限,而这种访问权限对派生类的客户端代码和派生类的派生类代码其访问控制作用。
相关文章推荐
- 关于继承方式和访问权限
- 关于访问控制权限和继承方式
- C++——三种继承方式与三种访问权限的相互组合
- c++ 中继承方式权限转变 以及 恢复访问权限
- c++不同继承方式的访问权限
- 关于static 访问权限、继承、多态、内部类结合在一起时的使用方法
- C++的三种访问权限与三种继承方式
- 三种继承方式与三种访问权限的相互组合
- C++——三种继承方式与三种访问权限的相互组合
- 三种类的访问权限与继承方式 public protected private derive
- 关于Java中的继承,包括重写、构造器、访问权限、构造过程等知识总结
- C++——三种继承方式与三种访问权限的相互组合
- 继承方式的访问权限—Java
- 关于java的访问权限控制,以关于继承的this和super小结
- C++ 的三种访问权限与三种继承方式
- 关于基类派生类的继承访问权限
- C++的三种访问权限与三种继承方式
- 简要谈谈C++继承方式与访问权限
- 关于C++中私有继承后虚函数的访问权限与私有继承后多态的问题
- C++ 中的访问权限与继承方式