章节目录

继承简介

本节阅读量:

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

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

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

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

水果层次

该图定义了层次结构。


层次结构

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

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

形状层次

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


展望

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

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

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


23.7 第23章总结

上一节

24.1 基本继承

下一节