Language agnostic 方法重载被认为是多态性吗?

Language agnostic 方法重载被认为是多态性吗?,language-agnostic,polymorphism,overloading,Language Agnostic,Polymorphism,Overloading,方法重载被认为是多态性的一部分吗?严格来说,多态性来自: 是一种类型A显示为另一种类型B并与之类似使用的能力 因此,方法重载本身不被认为是多态性定义的一部分,因为重载被定义为一种类型的一部分 如果您谈论的是包含多态性(通常被认为是覆盖的),那是另一回事,是的,它被认为是多态性的一部分 包含多态性是类型理论中的一个概念,其中一个名称可以表示许多不同类的实例,只要它们与一些常见的超类相关 不,重载不是。也许你指的是多态性的一部分 为了进一步澄清,请参阅维基百科: 多态性与方法不同 重载或方法重写。

方法重载被认为是多态性的一部分吗?

严格来说,多态性来自:

是一种类型A显示为另一种类型B并与之类似使用的能力

因此,方法重载本身不被认为是多态性定义的一部分,因为重载被定义为一种类型的一部分

如果您谈论的是包含多态性(通常被认为是覆盖的),那是另一回事,是的,它被认为是多态性的一部分

包含多态性是类型理论中的一个概念,其中一个名称可以表示许多不同类的实例,只要它们与一些常见的超类相关


不,重载不是。也许你指的是多态性的一部分

为了进一步澄清,请参阅维基百科:

多态性与方法不同 重载或方法重写。 多态性只与 特定知识的应用 接口或应用程序的实现 更通用的基类

因此,我要说的是方法重写和方法重载,以及一些语言关于多态性的便利特性,但不是多态性(在面向对象编程中)的主要关注点,多态性只涉及一个对象作为其层次链中的另一个对象的能力

  • 重载多态性(也称为特殊多态性)
  • 覆盖多态性

因此,是的,它是多态性的一部分。

这是一个必要的缺点,而且只能用作补充。最后,重载只应转换并最终转发到main方法。由于staticalky调度环境中的大多数VM不知道如何将一种类型转换为另一种类型,因此必须进行过度编码,以便参数适合目标,而这正是使用重载来帮助解决问题的地方

 StringBuilder
     Append(String) // main
     Append(Boolean) // converts and calls append(String)

多态性有两种类型

  • 静止的
  • 动态的
  • 重载属于静态多态性类型。。重写属于动态(或运行时)多态性


    撇开Wikipedia pedantics不谈,考虑多态性的一种方法是:一行代码/一个方法调用在运行时执行不同操作的能力,这取决于用于进行调用的对象实例的类型

    方法重载不会更改运行时的行为。在编写和编译代码时,重载为相同方法名称上的参数列表提供了更多选择,但在编译代码时,该选择将永远固定在代码中


    不要与方法重写混淆,方法重写是多态性的一部分。

    方法重写或重载不是多态性。 正确的说法是,多态性可以使用方法重写或重载以及其他方法来实现

    为了使用方法重写实现多态性,可以重写子类中方法的行为

    为了使用方法重载实现多态性,您需要使用相同的名称和相同数量的参数编写许多方法,但使用不同的数据类型,并在这些方法中实现不同的行为。这也是多态性


    实现多态性的其他方法是运算符重载和实现接口。

    “多态性”只是一个词,没有一个全球一致认可的精确定义。对于你的问题,你不会被“是”或“否”的回答所启发,因为区别在于所选择的“多态性”的定义,而不是作为任何特定语言特征的方法重载的本质。您可以在这里的大多数其他答案中看到这方面的证据,每个答案都介绍了自己的定义,然后根据定义评估语言功能。

    您需要提到的是,“本节的事实准确性存在争议”因此,据我所知,还没有100%地说明重载是多态性。@FractalizeR也许您的理解仅限于面向对象语言中的运行时多态性,而不是通则中的术语(我在这里引用的是WikiPedia;)@FractalizeR:Strachey定义了Darin说的话。该部分内容在事实上没有争议。(至少,没有人真正读过源文件。)但我在“Head First Java”(第二版)中提到,“重载方法不涉及多态性!”/请参阅以了解为什么这是错误的。请参阅(特别是第1.3节)以更容易理解为什么这是错误的。维基百科不可靠。。。您应该始终访问来源。@GrijeshChauhan不适用文章:“你应该使用或引用维基百科->>>作为一篇学术论文的来源@GrijeshChauhan,我就是这么说的。但是你引用了一篇不适用的文章,因为答案不是学术论文;有一些定义指出,这不仅仅与运行时行为有关。(无论是哪种方式,也考虑一种类似Groovy的语言,在运行时重载被解决)。请回答这个问题,而不是评论一般话题。另外,请检查你的拼写。这个问题是,一些人决定以观点为基础结束,好像“多态性”没有明确的定义(也被公认的答案所声称)。这是错误的,所以我投票决定重新开放。这很好,符合Pierce“类型和编程语言”、Cardelli&Wegner“关于理解类型、数据抽象和多态性”以及最初Strachey“编程语言中的基本概念”中的学术定义。在Java中,根据Kathy Sierra的书,它指出“多态性仅适用于重写,而不适用于重载”,在第2章的演练部分中