章节目录

继承简介

本节阅读量:

在上一章中,我们讨论了对象组合,其中复杂类由更简单的类和类型构造而成。对象组合非常适合构建与其部分具有“有一个”关系的新对象。然而,对象组合只是C++允许您构造复杂类的两种主要方法之一。第二种方法是继承,它用于建模两个对象之间的“是一个”关系。

与对象组合不同,对象组合通过组合和连接其他对象来创建新对象,而继承则通过直接获取其他对象的属性和行为,并对其进行扩展或专门化来创建新对象。就像对象组合一样,继承在现实生活中无处不在。当你出生时,你继承了父母的基因,并从他们那里获得了身体属性——但随后你又在此基础上加入了自己的个性。技术产品(计算机、手机等)也会继承前代产品的功能(通常用于向后兼容)。例如,英特尔奔腾处理器继承了英特尔486处理器定义的许多功能,而英特尔486本身又继承了更早期处理器的功能。C++继承了它所基于的C语言的许多功能,而C也继承了它之前编程语言的许多功能。

又例如,虽然苹果和香蕉是不同的水果,但它们都有一个共同点:它们都是水果。因为苹果和香蕉是水果,简单的逻辑告诉我们,任何关于水果的一般事实也适用于苹果和香蕉。例如,所有水果都有名称、颜色和大小。因此,苹果和香蕉也有名字、颜色和大小。我们可以说,苹果和香蕉继承(获得)了水果的所有特性,因为它们是水果。我们还知道,水果会经历成熟过程,并在这个过程中变得可以食用。

放在图中,苹果、香蕉和水果之间的关系可能看起来像这样:

水果层次

该图定义了层次结构。


层次结构

层次结构是一种显示各种对象如何相关的图表。大多数层次结构要么显示随时间推移而变化的过程(386->486->奔腾),要么以从一般到具体的方式对事物进行分类(水果->苹果->蜜饯)。如果你学过生物学,著名的界、门、纲、目、科、属、种排序就定义了一个层次结构(从一般到具体)。

下图是层次结构的另一个例子:正方形是矩形,矩形是四边形,四边形是形状。等边三角形是三角形,三角形也是形状。放在层次结构图中,它看起来像这样:

形状层次

该图从一般(顶部)到具体(底部),层次结构中的每一项都继承它上方项的属性和行为。


展望

在本章中,我们将探索继承在C++中如何工作的基础知识。

下一章,我们将探索继承如何通过虚函数实现多态性(面向对象编程中的一个常见术语)。

随着学习推进,我们还将讨论继承的关键好处以及一些缺点。


23.7 第23章总结

上一节

24.1 基本继承

下一节


本节目录