1、类的继承与派生
类的继承,是新的类从已有类那里得到已有的特性。从已有类产生新类的过程就是类的派生。
原有的类称为基类或父类,产生的新类称为派生类或子类。
(1)派生类的定义
class 派生类名:继承方式 基类名1,继承方式 基类名2,继承方式 ...
{
派生类成员声明;
};
例如: Base1 和 Base2 是已经定义的类,下面是定义一个 名为 Derived 的派生类:
class Derived:public Base1,private Base2
{
public:
Derived();
~Derived();
};
一个派生类,可以同时有多个基类,这种情况称为多继承,只有一个直接基类的情况称为单继承。
继承方式规定了如何访问从基类继承的成员。默认缺省为私有继承(private)。
派生类成员是指除了从基类继承来的所有成员之外,新增加的数据和函数成员。
(2)派生类生成过程
a、吸收基类成员
这是继承的第一步,是将基类的成员全盘接收
这样派生类实际包含了它的基类中除构造函数和析构函数之外的所有成员
b、改造基类成员
对基类成员的改造包括两个方面,一是基类成员的访问控制问题,主要依靠派生类定义时的继承方式来控制
另一个是对基类数据或函数成员的覆盖或隐藏,而隐藏就是简单地在派生类中声明一个和基类数据或函数同
名的成员。如果派生类声明了一个和某基类成员同名的新成员(如果是成员函数,则参数表也要相同,参数不同的情况属
于重载),派生的新成员就隐藏了外层同名成员(称作同名隐藏)。
c、添加新的成员
2、访问控制
(1)公有继承
当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类的私有成员不可直接访问
(2)私有继承
当类的继承方式为私有继承时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,
而基类的私有成员在派生类中不可直接访问。