gpt4 book ai didi

polymorphism - "Polymorphism is not the same as method overloading or method overriding."

转载 作者:行者123 更新时间:2023-12-04 08:29:46 27 4
gpt4 key购买 nike

“多态与方法重载或方法覆盖不同。......两者都不是......本身就是多态的实现”。

这是引自 wikipedia

然而,在“面向对象编程”一书中,Timothy Budd 指出有“四种不同形式的多态性”:

  • 重载(即席多态性)
  • 覆盖(包含多态性)
  • 多态变量(赋值多态)
  • 泛型

  • 谁是对的?谢谢

    最佳答案

    多态是编程语言的一个特性或特性。编程语言要么支持,要么不支持。由于编程语言有时属于完全不同的范式,因此不同的范式(函数式编程或面向对象编程)可能对多态在该特定范式中的表达方式的解释和应用略有不同。

    据我所知,在 OOP 中,多态被认为是基本原则之一,也是一个非常有特色的原则。大多数面向对象的语言在其众多特性中都具有多态性。简而言之,当具有多态实现的对象的调用者不知道该对象的确切类型时,最好能看到多态性。 is 通常是继承和强制转换的结果,也称为 subtype polymorphism ,并通过使用 vTables 工作.

    我(与许多作者一起)都认为运算符重载是多态性的一种表现。因此,如果您重载 == 运算符以获取 TypeA == TypeB,如果您正在比较包含类型为 A 或 B 的随机元素的列表中的元素,则您实际上将 TypeB 解释为 TypeA,您并不真正关心进来的是什么,因为他们都可以得到平等对待。像许多其他辩论一样,这场辩论有捍卫者和仇恨者。

    但这就是 OOP 故事的结局。

    在函数式(声明式)语言(Lisp、F#)中,由于一等公民是函数(vs 对象),多态性通过函数之间的关系来表达,并且表现形式略有不同。见 Type Polymorphism

    我想说的最后一句话是,我和其他人一样喜欢维基百科,但你必须始终对文章持保留态度,不要在没有确认其他来源的情况下盲目相信它们。如果你想了解 OOP 的真正原理,你应该从这里开始:

    Object-Oriented Software Construction (Bertrand Meyer)

    关于polymorphism - "Polymorphism is not the same as method overloading or method overriding.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4472845/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com