24-1 继承介绍

在上一章中,我们讨论了对象组合——即通过更简单的类和类型构建复杂类的方法。对象组合特别适合构建与组成部分存在“拥有has-a”关系的全新对象。然而,对象组合只是C++构建复杂类的两种主要方式之一。第二种方式是通过继承,它在两个对象之间建立“是is-a”的关系。

与通过组合连接其他对象来创建新对象的对象组合不同,继承是通过直接获取其他对象的属性和行为,进而对其进行扩展或特化来创建新对象。如同对象组合,继承在现实生活中无处不在。当你受孕时,你继承了父母的基因,获得了双方的生理特征——但随后你又叠加了自己的个性。技术产品(计算机、手机等)会继承前代产品的特性(通常用于向后兼容)。例如英特尔奔腾处理器继承了486处理器的诸多特性,而486本身又承袭了更早处理器的特性。C++继承了其基础语言C的众多特性,而C又从更早的编程语言中汲取了大量特性。

试想苹果与香蕉。尽管二者果实形态各异,但同属“水果”这一类别。基于简单逻辑,凡适用于水果的特性必然适用于苹果香蕉——例如所有水果都有名称、颜色和尺寸,因此苹果香蕉同样具备这三项特征。可以说苹果和香蕉因属于水果而继承(获得)了水果的所有属性。我们还知道水果会经历成熟过程,从而变得可食用。由于苹果和香蕉属于水果,我们同样知道它们会继承成熟的行为特征。

若用图表表示,苹果、香蕉与水果之间的关系可能如下所示:

image

此图定义了一个层次结构。

层级结构

层级结构是一种展示各类对象间关联关系的图表。大多数层级结构要么呈现时间演进(386→486→奔腾),要么通过从泛泛到具体的方式进行分类(水果→苹果→蜜脆苹果)。若你曾修习生物学,著名的域(domain)、界(kingdom)、门(phylum)、纲(class)、目(order)、科(family)、属(genus)、种(species)分类体系便构成典型的层级结构(由泛泛而论至具体明确)。

另一层级示例如下:正方形属于矩形,矩形属于四边形,四边形属于图形。直角三角形属于三角形,三角形同样属于图形。若绘制层级图示,结构如下所示:

image

该图从上至下呈现自上而下的层次结构,从概括性(顶部)到具体性(底部),层次结构中的每个元素都继承其上级元素的属性和行为。


展望

在本章中,我们将探讨C++中继承机制的基本原理。

下章将深入解析继承如何通过虚函数实现多态性(面向对象编程的重要概念之一)。

随着内容推进,我们还将探讨继承的核心优势及其潜在弊端。

posted @ 2026-01-31 17:18  游翔  阅读(1)  评论(0)    收藏  举报