【问题标题】:Is Overloading Polymorphim?是重载多态吗?
【发布时间】:2018-08-20 00:23:39
【问题描述】:

多态性是类实例的行为能力,就好像它是其继承树中另一个类的实例一样。

方法覆盖可以看作是多态。

此片段来自网站 www.javatpoint.com

它说我们可以通过方法重载和覆盖在 Java 中执行多态性。 我认为重载是一个不同的概念 有人说重载是静态多态?怎么样?

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

【问题讨论】:

    标签: java polymorphism


    【解决方案1】:
    Static binding = Compile-Time binding = Early binding -> Method overloading
    Dynamic binding = Run-Time binding = Late binding     -> Method overriding
    

    例如,如果重载方法之间存在歧义,则由编译器确定,因此在编译时。这种情况有点静态多态

    【讨论】:

    • 我认为多态性与采用多种形式的对象有关。如果没有错的话,重载不是多态性
    • 这只是你的(不完美的)想法,投票者也一样。 --> stackoverflow.com/questions/27799920/…
    • 还有很多资料提到java中的静态多态性,只要google一下就行了。
    【解决方案2】:

    多态性是一个 OOPS 概念,可让用户轻松获得更好且易于理解的命名约定。

    方法重载用于创建可与不同数量的参数一起使用的同名方法。像 Area 方法,矩形需要 2 个参数,而正方形需要 2 个参数。所以这个多态之王是方法重载,绑定可以在编译时完成。 面积(整数长度,整数宽度); 面积(整数边)

    方法覆盖是在运行时进行绑定的另一种方式。这意味着将要执行的方法将在运行时决定。这用于继承的情况,其中子类覆盖父类的功能。

    据我了解,您的困惑是您认为多态性意味着要执行的方法,或者在执行之前用户不应该知道,而多态性只是意味着可以在多个地方使用一个名称。 聚意味着许多。 phism 表示面孔。

    这是一个名称可以在许多地方使用而没有任何问题。

    【讨论】:

      【解决方案3】:

      简单易记,

      OverL加载 - CompiLe 时间多态

      OverRiding - Run Time Polymorphism

      重载允许不同的方法具有相同的名称,但不同的签名,其中签名可能因输入参数的数量或输入参数的类型或两者而异。重载与编译时间(或静态)多态性有关。

      有用的链接:enter link description here

      覆盖 是一种功能,它允许子类或子类提供其超类或父类之一已提供的方法的特定实现。

      有用的链接:enter link description here

      【讨论】:

        猜你喜欢
        • 2022-12-16
        • 2012-01-11
        • 2010-10-23
        • 1970-01-01
        • 2020-05-21
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        • 1970-01-01
        相关资源
        最近更新 更多