概述
继承的优点:减少代码的冗余 提高代码的重用性
继承的分类
继承方式分类:
public : 公有继承 (重要)
private : 私有继承
protected : 保护继承
父类个数分类:
1.单继承:指每个派生类只直接继承了一个基类的特征 (一个父类 派生出 一个子类)
2.多继承:指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一个基类的特征(多个父类 派生出 一个子类)
注意:
子类继承父类,子类拥有父类中全部成员变量和成员方法(除了构造和析构之外的成员方法),但是在子类中,继承的成员并不一定能直接访问,不同的继承方式会导致不同的访问权限。
权限
不管是什么继承方式,父类中的私有数据在 子类中不可见
继承中的 子类、父类、对象成员的构造和析构顺序
注意:
1、子类会默认调用 父类的 无参构造
2、子类 必须显示 使用初始化列表 调用 父类的有参构造
Son(int a,int b):Base(a),b(b)
{
//this->b = b;
}
父类和子类的同名 成员变量 处理
1、当 父类和子类 成员变量同名时 ,在子类就近原则 选择本作用域的子类成员。
2、如果在子类中必须使用父类中的同名成员 ,必须加上父类的作用域。
3、子类可以借助 父类的公有方法 间接的操作 父类的私有数据(不可见的数据)
如果子类和父类的成员函数同名,访问父类中的成员函数,需要加上父类的作用域。