继承基础知识
什么是继承
一个类拥有了另一个类的属性和方法,就是继承
如何继承
如图,Worker 类继承了 Person 类
三种继承方式
公有集成
class A : public B //A 类公有继承了 B 类
理解:B为基类,A为派生类。
B类中的 public 方式成员会以 public 方式继承到 A 类中;
B类中的 protected 方式成员会以 protected 方式继承到 A 类中;
B类中的 private 方式的成员不会被继承到 A 类中。
保护继承
class A : protected B //A 类保护继承了 B 类
私有继承
class A : private B //A 类私有继承了 B 类
继承中的特殊关系
隐藏
当基类和派生类有相同的成员方法时,基类的成员方法会被隐藏。但任然可以调用。
如下例子中当 Solder 继承了 Person 类后,Person中的 display() 方法被隐藏。
Is-A(派生类也是基类)
派生类也是基类,拿如下例子理解,士兵也是人。
Is-A使用
这里比较抽象,主要应用在把类当成参数使用时,派生类都是基类,那就是可以把派生类当成基类 类型的参数进行传递。如下图:
多继承与多重继承
多继承的定义
多继承的实现
多重继承的定义
多重继承的实现
虚继承
为什么使用虚继承
在上图的例子中, D 类多继承于 B 类和 C 类, B 类和 C 类又各自继承于 A 类。最后效果就是 D 类继承了两次 A 类,
这种继承模式叫做菱形继承,如果出现菱形继承,计算机就会报错。使用虚继承就是为了避免这一错误。
如何使用虚继承
让 B 类和 C 类虚继承 A 类,就会避免菱形继承出错。