第⑦章继承与派生 H 第7章继承与派生 7,1继承与派生 7,2多继承 73类的继承方式 74派生类的构造和析构函数 75派生中成员的标识与访问 7.6虚基类 BACK
第7章 继承与派生 第7章 继承与派生 7.1 继承与派生 7.2 多继承 7.3 类的继承方式 7.4 派生类的构造和析构函数 7.5 派生中成员的标识与访问 7.6 虚基类
第⑦章继承与派生 H 71继承与派生 71.1继承与派生的概念 在面向对象的程序设计中,大量使用继承和派生。 例如,我们要定义不同的窗口,因为窗口都具有共同 的特征,如窗口标题,窗口边框及窗口最大、最小等 我们不需要也没有必要将每一个窗口定义一遍。这时 我们可以先定义一个窗口类(系统的类库中已存在), 然后以这个窗口类作为基类派生出其它不同的窗口类
第7章 继承与派生 7.1 继承与派生 7.1.1 继承与派生的概念 在面向对象的程序设计中,大量使用继承和派生。 例如,我们要定义不同的窗口,因为窗口都具有共同 的特征,如窗口标题,窗口边框及窗口最大、最小等, 我们不需要也没有必要将每一个窗口定义一遍。这时 我们可以先定义一个窗口类(系统的类库中已存在), 然后以这个窗口类作为基类派生出其它不同的窗口类
第⑦章继承与派生 H 所谓继承,就是新的类从已有类那里得到已有的 特性。从另一个角度来看,从已有类产生新类的过程 就是类的派生。已有的类称为基类或父类,产生的新 类称为派生类或子类。派生类同样也可以作为基类再 派生新的类,这样就形成了类的层次结构
第7章 继承与派生 所谓继承,就是新的类从已有类那里得到已有的 特性。从另一个角度来看,从已有类产生新类的过程 就是类的派生。已有的类称为基类或父类,产生的新 类称为派生类或子类。派生类同样也可以作为基类再 派生新的类,这样就形成了类的层次结构
第⑦章继承与派生 H 类的继承和派生的层次结构,可以说是人们对自 然界中的事物进行分类、分析和认识的过程在程序设 计中的体现。现实世界中的事物都是相互联系、相互 作用的,人们在认识过程中,根据事物的实际特征, 抓住其共同特性和细小差别,利用分类的方法进行分 析和描述。例如,对于交通工具的分类见图7-1
第7章 继承与派生 类的继承和派生的层次结构,可以说是人们对自 然界中的事物进行分类、分析和认识的过程在程序设 计中的体现。现实世界中的事物都是相互联系、相互 作用的,人们在认识过程中,根据事物的实际特征, 抓住其共同特性和细小差别,利用分类的方法进行分 析和描述。例如,对于交通工具的分类见图7-1
第⑦章继承与派生 H 交通工具 火车 汽车 飞机 轮船 卡车 小汽车 旅游车 图7-1交通工具分类层次图
第7章 继承与派生 图7-1 交通工具分类层次图
第⑦章继承与派生 H 这个分类树反映了交通工具的派生关系。最高层 是抽象程度最高的交通工具,是最具有普遍和一般意 义的概念。下层(火车、汽车、飞机和轮船)具有了 上层交通工具的特性,同时加入了自己的新特征。而 最下层是最为具体的,例如汽车又可分为卡车、小汽 车和旅游车。在这个层次结构中,由上到下,是一个 具体化、特殊化的过程;由下到上,是一个抽象化的 过程。上下层之间的关系就可以看作是基类与派生类 的关系
第7章 继承与派生 这个分类树反映了交通工具的派生关系。最高层 是抽象程度最高的交通工具,是最具有普遍和一般意 义的概念。下层(火车、汽车、飞机和轮船)具有了 上层交通工具的特性,同时加入了自己的新特征。而 最下层是最为具体的,例如汽车又可分为卡车、小汽 车和旅游车。在这个层次结构中,由上到下,是一个 具体化、特殊化的过程;由下到上,是一个抽象化的 过程。上下层之间的关系就可以看作是基类与派生类 的关系
第⑦章继承与派生 H 类的派生实际是一种演化、发展过程,即通过扩 展、更改和特殊化,从一个已知类出发建立一个新类 通过类的派生可以建立具有共同关键特征的对象家族, 从而实现代码的重用。这种继承和派生的机制对于已 有程序的发展和改进是极为有利的
第7章 继承与派生 类的派生实际是一种演化、发展过程,即通过扩 展、更改和特殊化,从一个已知类出发建立一个新类。 通过类的派生可以建立具有共同关键特征的对象家族, 从而实现代码的重用。这种继承和派生的机制对于已 有程序的发展和改进是极为有利的
第⑦章继承与派生 H 71.2派生类的声明 在C+中,派生类的一般声明语法如下 class[继承方式]基类名> 派生类成员声明; 其中: ①clas是类声明的关键字,用于告诉编译器下面声 明的是一个类。 ②派生类名是新生成的类名
第7章 继承与派生 7.1. 2 派生类的声明 在C++中,派生类的一般声明语法如下: class:[继承方式] { 派生类成员声明; }; 其中: ①class是类声明的关键字,用于告诉编译器下面声 明的是一个类。 ②派生类名是新生成的类名
第⑦章继承与派生 H ③继承方式规定了如何访问从基类继承的成员 继承方式关键字为 private、 public和 protected,分别表 示私有继承、公有继承和保护继承。如果不显式地给 出继承方式关键字,系统的默认值就认为是私有继承 ( private)。类的继承方式指定了派生类成员以及类外 对象对于从基类继承来的成员的访问权限,这将在73 节中详细介绍
第7章 继承与派生 ③继承方式规定了如何访问从基类继承的成员。 继承方式关键字为private、public和protected,分别表 示私有继承、公有继承和保护继承。如果不显式地给 出继承方式关键字,系统的默认值就认为是私有继承 (private)。类的继承方式指定了派生类成员以及类外 对象对于从基类继承来的成员的访问权限,这将在7.3 节中详细介绍
第⑦章继承与派生 H ④派生类成员指除了从基类继承来的所有成员之 外,新增加的数据和函数成员。这些新增的成员正是 派生类不同于基类的关键所在,是派生类对基类的发 展。当重用和扩充已有的代码时,就是通过在派生类 中新增成员来添加新的属性和功能。可以说,这就是 类在继承基础上的进化和发展
第7章 继承与派生 ④派生类成员指除了从基类继承来的所有成员之 外,新增加的数据和函数成员。这些新增的成员正是 派生类不同于基类的关键所在,是派生类对基类的发 展。当重用和扩充已有的代码时,就是通过在派生类 中新增成员来添加新的属性和功能。可以说,这就是 类在继承基础上的进化和发展