《高级语言C++程序设计(第一版)-第八章.》.pdf
文本预览下载声明
202 第八章 继承与派生(Inheritance and Derive)
第八章 继承与派生 (
Derive)
C++程序用不同的类定义来表示一组数据及对这些数据的操作,往往在不
同的类之间有某种关系,除了上一章介绍的包含关系和友元关系之外,更多的
是继承与派生关系。
例如,一个公司或工厂的计算机管理系统,与设备有关的数据,如设备登
号、设备购入时间、设备价值等数据及若干操作的可以构成一个类。
交通工具是设备中的一类,它除了作为设备具有一般性之外,又会有一些
作为交通工具的特定数据及操作,如它应有由公安机关发给的牌照号等。
又如汽车,它是交通工具的一种。司机姓名、牌号,可能是它特有的数据。
而货车、轿车、大客车又是汽车中的不同集合,与它们分别相关的又会有不少
数据,如轿车的使用人姓名、货车的吨位、客车的载人数等等,都是它们特有
的数据项。
把与设备,交通工具,汽车,轿车,货车,客车相关的数据及操作定义为
互不相关的独立的类是不科学的,同时,也会造成许多重复内容,例如,所有
这些类,都包括同一个数据成员:设备登记号、购入时间等等。
不同类的定义应反映出类之间的相关关系,反映出上面例子中的层次关系。
C++语言中提供了类定义的派生和继承的功能,很好地解决了上面提出的问题。
两个类之间的继承关系,若类A 是类B 的基类,则类B 是类A 的派生类。
我们首先从下面的实例中学习如何建立类与类之间的继承关系。
8.1公司雇员档案的管理
公司中的雇员档案的管理是整个公司的管理系统的一个组成部分,其雇员
的档案数据内容一般根据雇员在公司中的不同职责和位置而有所区别。除了一
般雇员之外,可能还有管理人员、工程技术人员和高级主管,这些人员也是雇
8.1 公司雇员档案的管理 203
员,但他们又有其特殊性,在数据库中又必须保存某些特定的信息,例如管理
人员有级别信息,技术人员有学位、专业信息等等。因此,在管理软件中所设
计的类应反映其层次关系和特殊性,下面的程序是一个简化了的层次模块结构。
// program 8_1.cpp
# includeiostream.h
# includestring.h
class employee{
short age;
float salary;
…… //其它私有成员
protected:
char* name;
…… //其它保护成员
public:
employee(){
age=0;
salary=0;
name=NULL;
};
employee(short ag,float sa,char *na){
age=ag;
salary=sa;
name=new char[strlen(na)+1];
strcpy(name,na);
}; //构造函数
void print()const{
coutname:;
coutageyears old ;
coutsalary-salaryendl;
};
…… //其它公有成员
~employee(){
delete[ ]name;
};
204 第八章 继承与派生(Inheritance and Derive)
};
显示全部