5、继承与派生1-派生类的定义
1、在c++中,派生类的一般定义语法为:
class 派生类名:继承方式 基类名1,继承方式 基类名2,...,继承方式 基类名n
{
派生类成员声明;
};
定义一个Dr1从基类Base1、Base2派生而来的新类:
class Dr1:public Base1,private Base2
{
public:
Dr1();
~Dr1();
};
一个派生类可以同时有多个基类,这种情况称为多继承。也有单继承的情况。
继承方式规定了如何访问从基类继承的成员。继承方式关键字为:public、protected、private,分别表示公有继承、保护继承和私有继承,默认的继承方式就认为是私有继承方式。
派生类成员是指除了从基类继承来的所有成员之外,新增加的数据和函数成员。
2、派生类生成过程
在c++程序设计中,进行了派生类的定义之后,给出该类的成员函数的实现,整个类就算完成了;仔细分析派生类这个过程,实际是经历了三个步骤:吸收基类成员、改造基类成员、添加新的成员。面向对象的继承和派生机制,其最主要目的是实现代码的重用和扩充。
eg:
class employee
{
protected:
char name[20]; //姓名
int individualEmpNo;//个人编号
int grade;//级别
float accumPay;//月薪总额
static int employeeNo;//本公司职员编号目前最大值
public:
employee();//构造函数
~employee();//析构函数
void pay();//计算月薪函数
void promote(int);//升级函数
void SetName(char *);//设置姓名函数
char *GetName();//提取姓名函数
int GetindividualEmpNo();//提取编号函数
int Getgrade();//提取级别函数
float GetaccumPay();//提取月薪函数
};
class technician:public employee //兼职技术人员类
{
private:
float hourlyRate;//每小时酬金
int workHours;//当月工作时数
public:
technician();//构造函数
void SetworkHours(int wh);//设置工作时数
void pay();//计算月薪函数
};
1、吸收基类成员
在c++的类继承中,第一步是将基类的成员全盘接收,这样派生类实际上就包含了它的全部基类中除构造和析构函数之外的所有成员。在派生过程中构造函数和析构函数都不被继承。
2、改造基类成员
对基类成员的改造包括两方面,一个是基类成员的访问控制问题,主要依靠派生类定义时的继承方式来控制;第二个是对基类数据或函数成员的隐藏,就是在派生类中声明一个和基类数据或函数同名的成员,比如上面例子中的pay()。
如果派生类声明了同某基类同名的成员,那么在派生类的新成员就隐藏了外层同名成员。
3、添加新的成员
派生类新成员的加入是继承与派生机制的核心,是保证派生类在功能上有所发展的关键。