【问题标题】:Why is the key idea behind OOP polymorphism?为什么是 OOP 多态性背后的关键思想?
【发布时间】:2012-05-05 13:10:01
【问题描述】:

在《C++ Primer》一书中,作者写道:“OOP 背后的关键思想是多态性”。我不确定我是否理解作者的意思。其他重要的东西呢:抽象、继承等。 谁能详细说明一下?

编辑: 我不问“什么是多态性”。我在问“为什么多态性是 OOP 背后的关键”?为什么不继承是关键?

【问题讨论】:

标签: oop polymorphism


【解决方案1】:

我不确定它是否是 OOP 的 关键。这只是某人的意见。

我认为有四个键:抽象数据类型、封装、继承和多态。他们属于一起。

每个想法都依赖于之前的想法。 ADT 是唯一独立的。封装需要ADT。多态性需要继承。

多态有助于消除ifswitchcase 语句。您不必编写代码来根据对象类型确定要做什么;虚拟表只是在幕后为您调用正确的方法。

【讨论】:

  • 多态不需要继承:\
  • 你能详细说明那个 Raynos 吗?
  • 是的,请详细说明。我一直认为多态需要一个基本的静态类型才能在运行时挑选出多态类型。如果您对此答案投了反对票,请解释或撤销投反对票。
  • @duffymo - multiple dispatchad-hoc polymorphism 怎么样?这些多态性似乎不需要基本静态类型。
【解决方案2】:

作者可能这样说是因为:

  1. 当 B 类从 A 继承时,B 类可以类型转换为 A ----> 这也称为多态。所以继承直接允许多态。

  2. 当 A 实现接口 I*something* 时,A 可以以 I*something* 的形式出现,这也称为多态性。所以接口让多态成为现实。

  3. 抽象:抽象类只是另一个不能被实例化并充当基类的类(通常)。非抽象子类可以类型转换为抽象类,从而实现多态性。

事实上,OOP 的大多数概念都可以看作是多态性,由于这个作者可能已经说过了。

【讨论】:

    【解决方案3】:

    通常是创建对象(及其字段、方法等)的想法,这些对象可以具有多种形式 - 派生(抽象)类、实现的接口等等。

    如果你先问谷歌、维基百科等,你会在几秒钟内得到答案;)

    【讨论】:

    • 不,我没有问“什么是多态性”。我在问“为什么多态性是 OOP 背后的关键”?为什么不继承是关键?
    • 也许您应该首先确保您了解多态性是什么。继承是“多态性”背后的关键概念之一......
    猜你喜欢
    • 2016-09-08
    • 2012-06-13
    • 2013-10-04
    • 2019-11-19
    • 2011-07-14
    • 2014-06-09
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多