我们一般把原始类称为基类或者父类,新类为派生类,或者子类。
二、继承方式及区分:
C++ 中有三种继承方式:public、protected、private。三者均为访问类中成员权限的限制符。在类外如果想使用类中的成员,只能直接使用public类型的,protected 和 private都是不能访问的,对于类外使用而言,这两个是完全相同的。但是在基类的派生类中,可以直接访问继承而来的protected成员,但不能访问private限制的成员。所以在派生类中,可以访问基类继承而来的 public 和 protected 两种类型的成员。
在 public 公有派生下,继承而来的成员访问权限不变。protected派生下,public 和 protected 都变成 protected,private派生下,所有的继承下来都是private。可将上述关系概括如下图所示:
总之,对类外而言,private 与 protected两种类型等价,均不可访问。对基类的派生类而言,protected 与 public 等价,均可访问。public 无论对基类的派生类还是类外均可访问,private 无论对基类的派生类还是类外均不可访问(仅能在类内访问)。
三、继承的优缺点 优点:子类继承了父类能自动获得父类的接口 创建子类对象的时候不用创建父类对象 缺点:破坏了封装,父类的改变必定引起子类的改变,子类缺乏独立性 支持功能上的扩展,但多重继承往往增加了系统结构的复杂度。 继承是在静态编译的时候就已经确定了关系,不支持动态继承。 另外,实际应用中,常将继承与组合加以区分。两者的区别是 继承为 is a kind of,组合为 is a part of。 组合的优缺点: 优点:不会破环封装性父类的任何变化不会引起子类的变化 组合运用复杂的设计他们的关系实在程序运行的时候才确定的可以支持动态的组合 整体类可以对局部类的接口进行封装,提供新的接口 缺点:整体类不能自动获得和局部类同样的接口,只有通过创建局部的对象去调用它 创建整体类的时候需要创建局部类的对象
