除了公有派生,C++也支持私有派生和保护派生。
class B: private A {};
class C: protected A {};
基类成员 | 派生方式 | ||
---|---|---|---|
公有派生 | 私有派生 | 保护派生 | |
私有成员 | 不可访问 | 不可访问 | 不可访问 |
保护成员 | 保护 | 私有 | 保护 |
公有成员 | 公有 | 私有 | 保护 |
一般情况下都应使用公有派生。
这个也很好理解,就是什么派生过后更低一级的就变成这一级的了,不过确实了解就行,一般还是公有派生常用,另外几种派生过后与原来的类的权限有一些不同,也是徒增了开发难度,要注意更多的权限问题了。
在所有派生方式中,私有成员都不能被访问到,私有成员只能用于基类使用,想要能够继承下去同时不想要其他类能访问到,就可以使用保护成员。
保护继承和公有继承的区别就是保护继承会把继承过来的公有成员转变为保护成员。
层次概念是计算机的重要概念。通过继承(inheritance)的机制可对类(class)分层,提供类型/子类型的关系。C++通过类派生(class derivation)机制来支持继承。
被继承的类型称为基类(base class)或超类(superclass),新产生的类为派生类(derived class)或子类(subclass)。基类和派生类的集合称作类继承层次结构(hierarchy)。如果基类和派生类共享相同的公有接口,则派生类被称作类的子类型(subtype)。
派生反映了事物之间的联系,事物的共性与个性之间的关系。从工作量上看,工作量少,派生类中重复的部分可以从基类继承来,不需要再单独编程。