类的继承和派生
- 保持已有类的特性而构造新类的过程称为继承
- 在已有类的基础上新增自己的特性而产生新类的过程称为派生
- 被继承的已有类称为父类
- 派生出的新类称为派生类
- 继承的目的:实现代码重用
- 派生的目的:当新的问题出现,原有程序无法解决时,需要对原有程序进行改造
派生类生成过程
- 吸收基类成员:派生类继承了基类中除构造和析构函数外的所有成员
- 改造基类成员:控制基类成员的访问属性、同名隐藏
- 添加新的成员:扩展功能,重点是构造和析构函数
继承方式
- 不同继承方式的影响主要体现在:
- 派生类成员对基类成员的访问权限
- 通过派生类对象对基类成员的访问权限
- 三种继承方式:
公有继承
- 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问
- 派生类中的成员函数可以直接访问基类中的public和protected成员但是不能访问基类中的private成员
- 通过派生类的对象只能访问基类的public成员
私有继承(默认)
- 基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问
- 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员
- 通过派生类的对象不能直接访问基类中的任何成员
保护继承
- 基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可直接访问
- 派生类中的成员函数可以直接访问基类中的public和protected成员但不能直接访问基类中的private成员
- 通过派生类的对象不能直接访问基类中的任何成员
- 对建立其所在类对象的模块来说,它与private成员的性质相同
- 对于其派生类来说,它与public成员的性质相同
- 既实现了数据隐藏,又方便继承,实现代码重用
访问控制
单继承与多继承
- 单继承:派生类只从一个基类派生
- 多继承:派生类从多个基类派生
- 多重派生:由一个基类派生出多个不同的派生类
- 多层派生:派生类又作为基类,继续派生新的类
派生类的构造与析构函数
派生类成员的标识与访问
多态性
运算符重载