一、C++中的继承和派生
(1)、继承是从先辈那里得到属性和行为特征,从另一个角度来看待问题,就是从已有类产生新的类的过程就是类的派生。对派生类和基类的描述:可以说派生类是基类的具体化,而基类则是派生类的抽象。
(2)、基类综合了派生类的公共特性,派生类则是在基类的基础上增加某些特性,把抽象类变成具体、实用的类型。
(3)派生类的一般格式:
class 派生类名:[继承方式] 基类名{
派生类新增的数据成员和成员函数
};
(4)、公有继承
class UStudent:public Student{
...
};
私有继承
class UStudent:private Student{
...
};
保护继承
class UStudent:private{
...
};
二、基类成员在派生类中的访问属性
基类成员在派生类中的访问属性 | ||
基类中的成员 | 继承方式 | 基类成员在派生类中的访问属性 |
public | public | 公有 |
private | 私有 | |
protected | 保护 | |
private | public | 不可访问 |
private | 不可访问 | |
protected | 不可访问 | |
protected | public | 保护 |
private | 私有 | |
protected | 保护 |
三、派生类对基类成员的访问规则
派生类对基类成员的访问规则 | ||||
公有继承 | ||||
基类中的成员 | public | private | protected | |
访问方式 | 内部访问 | 可以 | 不可以 | 可以 |
对象访问 | 可以 | 不可以 | 不可以 | |
私有继承 | ||||
基类中的成员 | public | private | protected | |
访问方式 | 内部访问 | 可以 | 不可以 | 可以 |
对象访问 | 不可以 | 不可以 | 不可以 | |
保护继承 | ||||
基类中的成员 | public | private | protected | |
访问方式 | 内部访问 | 可以 | 不可以 | 可以 |
对象访问 | 不可以 | 不可以 | 不可以 | |
内部访问:由派生类中新增的成员函数对基类继承来的成员的访问 | ||||
对象访问:在派生类外部,通过派生类的对象对从基类继承来的成员的访问 |
四、公有继承的访问规则
【1】基类的公有成员和保护成员被派生类公有继承时,在派生类中依然是公有成员和保护成员。派生类的成员函数能够访问(类内能访问),但是派生类的对象只能访问继承的公有成员(类外访问)。
【2】基类的私有成员不允许派生类类继承。所以派生类无论是类内访问还是类外访问,都是无法直接访问从基类中继承过来的私有成员。