三,继承和多态
· 继承是定义新类的一种机制,使用这种机制创建新类时只需要声明新类和已创建类之间的差别
· 对应一个继承关系,创建的新类称为子类,被继承的类称为父类或基类。子类可以使用父类定义的属性和方法,也可以自定义新的属性和方法。
· 父类的特征不会受到子类的影响
· 多态性是指在类的对象在接受同样的消息时,所做出的响应不同。
· 因为“接受同样的消息”,所以这些对象将调用名称相同的成员函数;
· “所做出的响应不同”指函数实现的功能不同。
例如。当我军向未知部队发出信息,友军将回答接头暗号,而敌军回答错误信息。同样是对信息的响应,由于反映对象不同,响应方法的内容也不同。
继承
派生类的定义格式为:
class 派生类:继承方式 基类1,.... ,继承方式 基类n
{
派生类增加的成员声明;
}
继承有三种方式:即公有继承,私有继承,保护继承
不同的继承方式下,派生类对象对基类成员访问控制权限不同
公有继承方式(public方式)
创建的派生类对基类成员访问权限如下:
基类公有成员转化为派生类的公有成员,派生类自身的成员函数可直接访问从基类继承的公有成员。
基类保护成员转化为派生类的保护成员,派生类自身的成员函数可以直接访问从基类继承的保护成员。
基类的私有成员成为派生类中更加封闭的私有成员,即使派生类的方法也无法直接访问。派生类的函数必须通过基类公有成员或保护成员函数间接访问从基类继承的私有成员。
在派生类之外,可以通过派生类对象直接访问从基类继承的公有成员。
公有继承示例:
派生类--经声明,就继承了基类除构造函数和析构函数以外的所有成员,实现了代码重用。
派生类在继承基类成员的基础上,一般都会有所变化。这些变化主要体现在两个方面:
(1)派生类对基类的扩充
增加新的成员是派生类对基类的扩充方式。这里派生类Employee继承Person类,并增加了数据成员m_ strDept, 显然是扩充了基类的内容。
(2)派生类对基类成员的改造
主要指派生类可以对基类成员函数进行重定义。
派生类继承了父类的私有成员,但是即使是派生类自身的成员函数也无法直接访问这种私有成员。
派生类必须通过基类公有或保护方法间接访问了继承自基类私有成员。