返回介绍

第 13 章 类继承

发布于 2024-10-08 23:14:10 字数 1368 浏览 0 评论 0 收藏 0

本章内容包括:

  • is-a 关系的继承。
  • 如何以公有方式从一个类派生出另一个类。
  • 保护访问。
  • 构造函数成员初始化列表。
  • 向上和向下强制转换。
  • 虚成员函数。
  • 早期(静态)联编与晚期(动态)联编。
  • 抽象基类。
  • 纯虚函数。
  • 何时及如何使用公有继承。

面向对象编程的主要目的之一是提供可重用的代码。开发新项目,尤其是当项目十分庞大时,重用经过测试的代码比重新编写代码要好得多。使用已有的代码可以节省时间,由于已有的代码已被使用和测试过,因此有助于避免在程序中引入错误。另外,必须考虑的细节越少,便越能专注于程序的整体策略。

传统的 C 函数库通过预定义、预编译的函数(如 strlen( ) 和 rand( ),可以在程序中使用这些函数)提供了可重用性。很多厂商都提供了专用的 C 库,这些专用库提供标准 C 库没有的函数。例如,可以购买数据库管理函数库和屏幕控制函数库。然而,函数库也有局限性。除非厂商提供了库函数的源代码(通常是不提供的),否则您将无法根据自己特定的需求,对函数进行扩展或修改,而必须根据库的情况修改自己的程序。即使厂商提供了源代码,在修改时也有一定的风险,如不经意地修改了函数的工作方式或改变了库函数之间的关系。

C++类提供了更高层次的重用性。目前,很多厂商提供了类库,类库由类声明和实现构成。因为类组合了数据表示和类方法,因此提供了比函数库更加完整的程序包。例如,单个类就可以提供用于管理对话框的全部资源。通常,类库是以源代码的方式提供的,这意味着可以对其进行修改,以满足需求。然而,C++提供了比修改代码更好的方法来扩展和修改类。这种方法叫作类继承,它能够从已有的类派生出新的类,而派生类继承了原有类(称为基类)的特征,包括方法。正如继承一笔财产要比自己白手起家容易一样,通过继承派生出的类通常比设计新类要容易得多。下面是可以通过继承完成的一些工作。

  • 可以在已有类的基础上添加功能。例如,对于数组类,可以添加数学运算。
  • 可以给类添加数据。例如,对于字符串类,可以派生出一个类,并添加指定字符串显示颜色的数据成员。
  • 可以修改类方法的行为。例如,对于代表提供给飞机乘客的服务的 Passenger 类,可以派生出提供更高级别服务的 FirstClassPassenger 类。

当然,可以通过复制原始类代码,并对其进行修改来完成上述工作,但继承机制只需提供新特性,甚至不需要访问源代码就可以派生出类。因此,如果购买的类库只提供了类方法的头文件和编译后代码,仍可以使用库中的类派生出新的类。而且可以在不公开实现的情况下将自己的类分发给其他人,同时允许他们在类中添加新特性。

继承是一种非常好的概念,其基本实现非常简单。但要对继承进行管理,使之在所有情况下都能正常工作,则需要做一些调整。本章将介绍继承简单的一面和复杂的一面。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文