多态性是采取多种形式的能力。方法重写是运行时多态性。
我的问题是:
Java中有静态多态吗?
方法隐藏可以被认为是一种多态吗?
在这个question's answer中,有人说静态方法不是多态的。这是什么原因?
答案 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 overloading
和Method 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)
答案 4 :(得分:0)
我认为方法隐藏在技术上会被认为是多态的。根据定义,隐藏方法具有与其基类中相同的签名或形式。这只是其中的一种形式&#34;。把它想象成重载......发生在&#34;覆盖&#34;完全相同的签名。这将是静态多态性。