层次概念是计算机的重要概念。通过
继承
(inheritance)的机制可对
类
(class)分层,提供类型/子类型的关系。C++通过
类派生
(class derivation)机制来支持继承。
被继承的类型称为 基类 (base class)或 超类 (superclass),新产生的类为 派生类 (derived class)或 子类 (subclass)。 基类和派生类的集合称作类继承层次结构(hierarchy)。如果基类和派生类共享相同的公有接口,则派生类被称作类的子类型(subtype)。
继承机制体现了现实世界的层次结构,如下图所示。
派生反映了事物之间的联系,事物的共性与个性之间的关系。从工作量上看,工作量少,派生类中重复的部分可以从基类继承来,不需要再单独编程。
“层次”的获得:多种考虑,例如类的分解问题(如何把多个类的共同特征分解到一个基类中)。
C++中由基类派生出派生类的语法形式为:
class 派生类名:访问限定符 基类名1《,访问限定符 基类名2,……,访问限定符 基类名n 》
{
《 《private: 》成员表1;》
//派生类增加或替代的私有成员
《public: 成员表2;》
//派生类增加或替代的公有成员
《protected: 成员表3;》
//派生类增加或替代的保护成员
};//分号不可少
其中,基类1,基类2,……是已声明的类。
在派生类定义的类体中给出的成员称为 派生类成员 ,它们是新增加的数据和函数成员。这些新增加的成员是派生类对基类的发展,它们给派生类添加了不同于基类的新的属性和功能。派生类成员包括新添加的,也包括通过屏蔽作用,取代基类成员的更新成员。
◆ 2、单一继承和多重继承
◆ 3、编制派生类的步骤
编制派生类时可分四步:
注意:必须规范化地编程,除了算法必须规范化外,编程的步骤也必须规范化,上面的步骤就是继承与派生编程的规范化步骤。
访问控制也是三种: 公有(public)方式 , 保护(protected)方式 和 私有(private)方式 ,相应的继承亦称 公有继承 、 保护继承 和 私有继承 。访问限定有两方面含义:
下表给出公有派生和私有派生的访问限制。
公有派生是绝对主流。
被继承的类型称为 基类 (base class)或 超类 (superclass),新产生的类为 派生类 (derived class)或 子类 (subclass)。 基类和派生类的集合称作类继承层次结构(hierarchy)。如果基类和派生类共享相同的公有接口,则派生类被称作类的子类型(subtype)。
继承机制体现了现实世界的层次结构,如下图所示。

派生反映了事物之间的联系,事物的共性与个性之间的关系。从工作量上看,工作量少,派生类中重复的部分可以从基类继承来,不需要再单独编程。
“层次”的获得:多种考虑,例如类的分解问题(如何把多个类的共同特征分解到一个基类中)。
类的派生与继承
◆ 1、由基类派生出派生类的语法形式C++中由基类派生出派生类的语法形式为:
class 派生类名:访问限定符 基类名1《,访问限定符 基类名2,……,访问限定符 基类名n 》
{
《 《private: 》成员表1;》
//派生类增加或替代的私有成员
《public: 成员表2;》
//派生类增加或替代的公有成员
《protected: 成员表3;》
//派生类增加或替代的保护成员
};//分号不可少
其中,基类1,基类2,……是已声明的类。
在派生类定义的类体中给出的成员称为 派生类成员 ,它们是新增加的数据和函数成员。这些新增加的成员是派生类对基类的发展,它们给派生类添加了不同于基类的新的属性和功能。派生类成员包括新添加的,也包括通过屏蔽作用,取代基类成员的更新成员。
◆ 2、单一继承和多重继承
- 单一继承(single-inheritance) :一个派生类只有一个直接基类。
- 多重继承(multiple-inheritance) :一个派生类可以同时有多个基类。
派生类吸收了基类的几乎所有成员。
◆ 3、编制派生类的步骤
编制派生类时可分四步:
- 吸收基类的成员:不论是数据成员,还是函数成员,除构造函数与析构函数外全盘接收(继承方式)。
- 改造基类成员:声明一个和某基类成员同名的新成员,该新成员将屏蔽基类同名成员。称为同名覆盖(override)
- 发展新成员:派生类新成员必须与基类成员不同名,它的加入保证派生类在功能上有所发展。
- 重写构造函数与析构函数。
- 第2步中,新成员若是成员函数,参数表也必须一样,否则是重载。
- 第3步中,独有的新成员才是继承与派生的核心特征。
- 第4步是重写构造函数与析构函数,派生类不继承这两种函数。
- 例如,在顺序表中,要求把数组改为动态建立,采用派生类的方法,在第二步用动态数组把静态数组覆盖掉;原来的构造函数与析构函数完全不能用了,新的函数要进行动态(堆)内存的分配与释放。
- 不管原来的函数是否可用一律重写可免出错。
注意:必须规范化地编程,除了算法必须规范化外,编程的步骤也必须规范化,上面的步骤就是继承与派生编程的规范化步骤。
公有派生与私有派生
派生类定义时的访问限定符 ,是指 访问控制 ,亦称为 继承方式 ,用于 在派生类中对基类成员 进一步的限制。访问控制也是三种: 公有(public)方式 , 保护(protected)方式 和 私有(private)方式 ,相应的继承亦称 公有继承 、 保护继承 和 私有继承 。访问限定有两方面含义:
- 派生类新增成员函数对基类(继承来的)成员的访问;
- 从派生类对象之外对派生类对象中的基类成员的访问。
下表给出公有派生和私有派生的访问限制。

公有派生是绝对主流。