C++继承编辑
本词条缺少
信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来
编辑吧!
目录
定义
派生类的定义格式
单继承的定义格式如下:
1
2
3
4
|
class
<派生类名>:<继承方式><基类名>
{
<派生类新定义成员>
};
|
其中,class是关键词,<派生类名>是新定义的一个类的名字,它是从<基类名>中派生的,并且按指定的<继承方式>派生的。<继承方式>常使用如下三种关键字给予表示:
public 表示公有
基类;
private 表示私有
基类;
protected 表示保护
基类;
多继承的定义格式如下:
1
2
3
4
5
6
7
|
class
<派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类新定义成员>
};
|
可见,多继承与单继承的区别从定义格式上看,主要是多继承的
基类多于一个。
如果省略继承方式,对'class'将采用私有继承,对'struct'将采用公有继承。
也就是说
1
2
3
4
5
|
classBase1{};
structBase2{};
classDerive:Base1,Base2{};
|
那么,Derive类将
私有继承Base1,公有继承Base2。相当于:
1
|
classDerive:privateBase1,publicBase2{};
|
1继承方式编辑
公有继承(public)、
私有继承(private)、保护继承(protected)是常用的三种继承方式。
1. 公有继承(public)
2.
私有继承(private)
3. 保护继承(protected)
下面列出三种不同的继承方式的基类特性和
派生类特性。
public
|
protected
|
private
| |
公有继承
|
public
|
protected
|
不可见
|
私有继承
|
private
|
private
|
不可见
|
保护继承
|
protected
|
protected
|
不可见
|
为了进一步理解三种不同的继承方式在其成员的可见性方面的区别,下面从三种不同角度进行讨论。
公有方式
(1)
基类成员对其对象的可见性:
公有成员可见,其他不可见。这里保护成员同于私有成员。
公有成员和保护成员可见,而私有成员不可见。这里保护成员同于公有成员。
公有成员可见,其他成员不可见。
私有方式
(1) 基类成员对其对象的可见性:
公有成员可见,其他成员不可见。
(2) 基类成员对派生类的可见性:
公有成员和保护成员是可见的,而私有成员是不可见的。
(3) 基类成员对派生类对象的可见性:
所有成员都是不可见的。
保护方式
2一般规则编辑
公有继承时,水平访问和垂直访问对
基类中的公有成员不受限制;
保护继承时,对于垂直访问同于公有继承,对于水平访问同于
私有继承。
基类与
派生类的关系
任何一个类都可以派生出一个新类,
派生类也可以再派生出新类,因此,基类和派生类是相对而言的。
3两类关系编辑
具体化
类的层次通常反映了客观世界中某种真实的模型。在这种情况下,不难看出:基类是对若干个
派生类的抽象,而派生类是基类的具体化。基类抽取了它的
派生类的公共特征,而派生类通过增加行为将
抽象类变为某种有用的类型。
延续化
先定义一个抽象基类,该基类中有些操作并未实现。然后定义非抽象的
派生类,实现抽象基类中定义的操作。例如,
虚函数就属此类情况。这时,
派生类是抽象的基类的实现,即可看成是基类定义的延续。这也是
派生类的一种常用方法。
派生类
4成员调整编辑
控制方式
访问声明采用作用域"
::" ,它的一般形式为:基类名
::成员名;。在
派生类的类界面中,将这些访问声明放在合适的访问控制保留字之后,从而改变在派生类中该成员的访问控制方式。