第五章继承和派生类 继承和派生类是面向对象程序设计的一个重要 组成部分。本章要求掌握单一继承、多重继承 两义性、支配规则和虚基类的概念;掌握派生 类的访问权限,构造函数与析构函数的调用顺 序;理解两义性及其支配规则,训练运用作用 域分辨符,掌握赋值兼容规则
第五章 继承和派生类 继承和派生类是面向对象程序设计的一个重要 组成部分。本章要求掌握单一继承、多重继承、 两义性、支配规则和虚基类的概念;掌握派生 类的访问权限,构造函数与析构函数的调用顺 序;理解两义性及其支配规则,训练运用作用 域分辨符,掌握赋值兼容规则
、继承和派生的基本概念: 继承、基类与派生类 继承:继承就是创建一个具有别的类的属性和行为的 新类的能力。就是从已有的对象类型出发,建立一种 新的对象类型,使它继承(具有)原对象特点和功能。 类的派生:是一个过程,就是通过特殊化已有的类来 建立新类的过程。(我们想象水稻学家们试验出一个 水稻新品种的情况,通过已有的种类,创出新的种类, 而这个新类又继承了原来品种的一些特点和属性,并 有自己新的属性和特点)
一、继承和派生的基本概念: 继承、基类与派生类: 继承:继承就是创建一个具有别的类的属性和行为的 新类的能力。就是从已有的对象类型出发,建立一种 新的对象类型,使它继承(具有)原对象特点和功能。 类的派生:是一个过程,就是通过特殊化已有的类来 建立新类的过程。(我们想象水稻学家们试验出一个 水稻新品种的情况,通过已有的种类,创出新的种类, 而这个新类又继承了原来品种的一些特点和属性,并 有自己新的属性和特点)
基类和派生类:如同上面的例子,原有的水稻品种就是"基类 "p新生的品种就叫做"派生类",新的品种"遗传"了原来品种 的各种基因,在这里,一个派生类自动地将基类的成员做为 已的成员,我们叫做"继承",很形象地,基类和派生类又 可叫做"父类"和"子类
基类和派生类:如同上面的例子,原有的水稻品种就是"基类 ",新生的品种就叫做"派生类",新的品种"遗传"了原来品种 的各种基因,在这里,一个派生类自动地将基类的成员做为 自己的成员,我们叫做"继承",很形象地,基类和派生类又 可叫做"父类"和"子类"
性质约束和性质扩展: 类派生(继承)是面向对象程序设计方法和c+语言最重要的 继承常用来表示类属关系,不能将继承理解为构成关系, 比如我们假设昆虫是一个类,而蝴蝶也是一个类,这两个 类是派生(继承)的关系,基类是昆虫,派生类是蝴蝶,这 是一个类属的关系,蝴蝶类是属于昆虫类的,但不能理解 为构成关系,蝴蝶这个类不是昆虫这个类中的成员的简单 包括,它还有其他一些独特的成员,而原来的成员也被重 新定义,这些都表明蝴蝶类是昆虫类的一个分支而不是构 成关系
性质约束和性质扩展: 类的派生(继承)是面向对象程序设计方法和c++语言最重要的 特征之一。 继承常用来表示类属关系,不能将继承理解为构成关系, 比如我们假设昆虫是一个类,而蝴蝶也是一个类,这两个 类是派生(继承)的关系,基类是昆虫,派生类是蝴蝶,这 是一个类属的关系,蝴蝶类是属于昆虫类的,但不能理解 为构成关系,蝴蝶这个类不是昆虫这个类中的成员的简单 包括,它还有其他一些独特的成员,而原来的成员也被重 新定义,这些都表明蝴蝶类是昆虫类的一个分支而不是构 成关系
从上面的例子来理解,从现存类中派生出新类时,可以对派生 类做如下几种变化: 新的成员变量; 2.可以增加新的成员函数; 3.可以重新定义已有的成员函数; 4可以改变现有成员的属性(访问权限)。 以上允许派生类所作的变化是很广泛的,由此我们可以用派生 类对其从父类继承来的的性质进行限制或删除(这就是性质约 束),也可以对父类的性质进行增加(这就是性质扩展)
从上面的例子来理解,从现存类中派生出新类时,可以对派生 类做如下几种变化: 1.可以增加新的成员变量; 2.可以增加新的成员函数; 3.可以重新定义已有的成员函数; 4.可以改变现有成员的属性(访问权限)。 以上允许派生类所作的变化是很广泛的,由此我们可以用派生 类对其从父类继承来的的性质进行限制或删除(这就是性质约 束),也可以对父类的性质进行增加(这就是性质扩展)