方法是否隐藏了多态的形式?

时间:2015-02-25 04:40:59

标签: java polymorphism override

多态性是采取多种形式的能力。方法重写是运行时多态性。

我的问题是:

  1. Java中有静态多态吗?

  2. 方法隐藏可以被认为是一种多态吗?

  3. 在这个question's answer中,有人说静态方法不是多态的。这是什么原因?

5 个答案:

答案 0 :(得分:1)

<强>多态性

Static Binding/Early binding/Compile time binding - Method overloading.(in same class)
Dynamic binding/Runtime binding/Method overriding.(in different classes.)

java中的多态性

它只有两种类型,Method overloadingMethod overriding,只要method overriding变成Method Hiding,就会失去它的多态性功能。

请参阅stackoverflow中的以下问题。

1。)Question1

2。)Question2

答案 1 :(得分:1)

运行时的多态性采用&#34;动态调度&#34;的形式。也就是说,调用的实际方法是根据您调用方法的实际实例确定的。显然,这仅适用于您拥有类的实例,因此严格来说,多态不适用于隐藏静态方法。有关差异的进一步说明check here

答案 2 :(得分:1)

如果我们运行此测试

class A {
    static void x() {
        System.out.println("A");
    }
}

class B extends A {
    static void x() {
        System.out.println("B");
    }
}

class Test {
    public static void main(String[] args) throws Exception {
        A a = new B();
        a.x();
    }
}

它将打印A.如果方法x()是多态的,它将打印B。

答案 3 :(得分:1)

  1. 多态性可以是静态的和动态的。重载是静态多态,而重写是动态多态。 用简单的单词重载意味着两个方法具有相同的方法名称但是采用不同的输入参数。这称为static,因为要调用的方法将在编译时决定 覆盖意味着派生类正在实现其超类的方法。

答案 4 :(得分:0)

我认为方法隐藏在技术上会被认为是多态的。根据定义,隐藏方法具有与其基类中相同的签名或形式。这只是其中的一种形式&#34;。把它想象成重载......发生在&#34;覆盖&#34;完全相同的签名。这将是静态多态性。