继承概述
1: has-a
模式: 一个对象包含另外的一个对象,那么这个叫做has-a
模式,汽车有车轮对象;
2: is-a
模式: 比如我们编写了一个猫的对象,后面我们要开发一个猫的特例, 波斯猫;
波斯猫 is a
猫;
3: has-a
的模式我们可以通过类包含其他的类来实现;
4: is-a
模式: c++
有继承机制,来实现;
5: 波斯猫 is a
猫,所以编写波斯猫代码的时候,可以不用再写猫的成员和方法,直接继承。
然后再扩展自己特有的方法;
6: 继承: 子类与父类, 派生类与基类两种说法;
继承语法
1: class
子类 : 继承方式 父类 {
// 定义和扩展子类特有的方法和数据成员;
};
public
公有继承:
父类私有的子类不能访问,父类protected
,子类也是protected
,父类public
子类也是public
;
protected
保护继承:
父类私有的子类不能访问,父类protected
子与public
子类是protected
;
private
私有继承:
父类私有的子类不能访问,父类protected
子与public
子类是private
;
默认不写继承方式,是私有继承,基类的私有类型子类也是不能访问的;
2: 继承的内存布局:
继承包含了父类的部分,并拥有了自己的部分,和包含类似;
3: 继承的子类在实例化的时候: 先构造父类实例,在构造子类实例;
4: 销毁子类实例的时候,先调用子类析构函数, 再调用父类析构函数;
5: 多继承: clas
s 类名: 继承方式 基类1, 继承方式 基类2… {},慎用多继承;
<