返回介绍

10.2 继承和多态都是多余的概念

发布于 2024-12-15 23:01:48 字数 1156 浏览 0 评论 0 收藏 0

对象 是带有一系列相关性质的数据。除此之外,它不带有任何必须附加的概念。明确这一点,有利于我们看到对象系统的本质与构建过程。

在《结构程序设计》中,达尔 4 用一种非常奇特的方式来定义了类与对象之间的关系,即:如果一个过程能够产生比调用语句存活得更久的数据实体,则我们称该过程为 ;这样的数据实体(实例,instance),我们称之为 对象 。更有趣的是,《结构程序设计》将这样构建对象系统的过程称为“层次程序结构 5 ”。不过这其中的“层次”却并不是指类的继承层次,而仅仅是指“按层次的方式构造和分析”去处理系统的复杂性问题。达尔在书中强调了“层次方式”是唯一有效的办法,但并没有认为系统的逐层分解与对象的继承之间存有某种必然联系。

事实上在 Simula 67 最初的“面向对象”观念中,对象只是一种(相对于一般数据类型而言)更为高级的数据抽象形式。直到 1971 年 SmallTalk 才提出了继承性概念。如今,对象的 PME(Property-Method-Event,即属性、方法、事件)模型,以及 EIP(Encapsulation-Inheritance-polymiorphism,即封装、继承、多态)构成了完整的面向对象编程的概念集。

但这些都并不是 对象 这一概念抽象的本义,而是实现 对象系统 过程中的一些实践。例如,我们可以将基于继承的对象系统 6 ,视作是通过层次方式来处理系统复杂性的一个实践。准确地说,它通过 类属关系 从开发目标复杂无序的数据中抽取了一部分出来,使它们成为一个可编程的、(在一定程度上)可复用的对象集。正因为这一过程只处理了 具有类属关系的层次数据 ,所以——必然地——下面这些问题也就局限了基于继承的面向对象系统的应用:

  • 无类属关系的数据;或
  • 非层次的数据;或
  • 系统中的逻辑需求。

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

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

发布评论

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