继承/派生一 类的继承/派生 什么是类的继承/派生 ■ 怎么定义派生类 ■如何继承父类的成员 ■ 派生类的构造函数和析构函数 ■ 类型兼容规则:派生类对象/父类对象 多重继承时重复继承问题一虚父类 http://math.ecnu.edu.cn/~jypan 2
http://math.ecnu.edu.cn/~jypan 2 继承/派生 —— 类的继承/派生 什么是类的继承/派生 怎么定义派生类 如何继承父类的成员 派生类的构造函数和析构函数 类型兼容规则:派生类对象/父类对象 多重继承时重复继承问题 — 虚父类
什么是继承/派生 什么是继承/派生: 在已有的类的基础上定义新的类→类的派生 为什么继承/派生: 一一继承可以使得派生类具有父类的各种属性和功能, 而不需要再次编写相同的代码。 十派生类在继承父类的同时,还可以通过重新定义某些属性或改写某些方法,来更 新父类的原有属性和功能,或增加新的属性和功能。 http://math.ecnu.edu.cn/~jypan 3
http://math.ecnu.edu.cn/~jypan 什么是继承/派生 什么是继承/派生: —— 在已有的类的基础上定义新的类 类的派生 为什么继承/派生: —— 继承可以使得派生类具有父类的各种属性和功能, 而不需要再次编写相同的代码。 † 派生类在继承父类的同时,还可以通过重新定义某些属性或改写某些方法,来更 新父类的原有属性和功能,或增加新的属性和功能。 3
什么是继承/派生(续) ●在已有类的基础上产生新类的过程就是类的派生 ·原有类称为父类或基类,新类称为子类或派生类 ●类的继承:派生类继承了父类的特性(数据和函数) 。派生类可以加入新的特性 ·派生类也可以作为父类,派生新的子类→继承层次结构 火车 大卡车 例: 交通工具 汽车 小轿车 飞机 面包车 十继承和派生提高了代码的可重用性,有利于软件开发和维护。 4 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 什么是继承/派生(续) 在已有类的基础上产生新类的过程就是类的派生 原有类称为父类或基类,新类称为子类或派生类 类的继承:派生类继承了父类的特性(数据和函数) 派生类可以加入新的特性 派生类也可以作为父类,派生新的子类 继承层次结构 例: 交通工具 火车 汽车 飞机 大卡车 小轿车 面包车 † 继承和派生提高了代码的可重用性,有利于软件开发和维护。 4
怎么定义派生类 c1ass派生类名:继承方式父类名1,继承方式父类名2,. 派生类成员声明; ,一个派生类可以有多个父类(多重继承) ●单继承:一个派生类只有一个父类 )一个父类可以派生出多个子类→类族 继承是可传递的:从父类继承的特性可以传递给新的子类 继承方式:规定了如何访问从父类继承的成员 继承方式有三种:public、protected、private 派生类成员:从父类继承的成员+新增加的成员 http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan 怎么定义派生类 class 派生类名: 继承方式 父类名1, 继承方式 父类名2, ... { 派生类成员声明; }; 一个派生类可以有多个父类(多重继承) 单继承:一个派生类只有一个父类 一个父类可以派生出多个子类 类族 ► 继承是可传递的:从父类继承的特性可以传递给新的子类 ► 继承方式:规定了如何访问从父类继承的成员 ► 继承方式有三种:public、protected、private ► 派生类成员:从父类继承的成员+新增加的成员 5
类的派生过程 派生过程:吸收父类成员,改造父类成员,添加新成员。 ●吸收父类成员 派生类包含父类中除构造和析构函数外的所有非静态成员 ·改造父类成员 -父类成员的访问控制(通过继承方式实现) 一对父类成员的覆盖或屏蔽,即如果新成员与父类成员同名,则只能访问 新成员(包括函数,即使形参不一致,也被屏蔽) ●添加新成员 根据实际需要,添加新的数据成员或函数成员 十注意:构造函数、析构函数、静态成员不能被继承! http://math.ecnu.edu.cn/~jypan 6
http://math.ecnu.edu.cn/~jypan 类的派生过程 派生过程:吸收父类成员,改造父类成员,添加新成员。 吸收父类成员 派生类包含父类中除构造和析构函数外的所有非静态成员 改造父类成员 - 父类成员的访问控制(通过继承方式实现) - 对父类成员的覆盖或屏蔽,即如果新成员与父类成员同名,则只能访问 新成员(包括函数,即使形参不一致,也被屏蔽) 添加新成员 根据实际需要,添加新的数据成员或函数成员 † 注意:构造函数、析构函数、静态成员不能被继承! 6