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