这种类型的问题已经有答案了,但是它让我感到困惑。在查看大量答案之后,希望您在将其复制之前先查看我的问题。
情况1 -
静态多态性 - 函数重载 动态多态性 - 函数覆盖
链接 - https://dev59.com/VGcs5IYBdhLWcg3wYzBU#12894211 https://dev59.com/g2Ii5IYBdhLWcg3w9wQU#20783390 还有很多其他的链接。
我的困惑在于,在所有的例子中,都是使用向上转型来展示动态多态性。如果我不进行向上转型会怎样呢?
class A{
public void show(){
System.out.print("A");
}
}
class B extends A{
public void show(){
System.out.print("B");
}
public static void main(String[] s){
A a = new B();
a.show(); // upcasting. It is dynamic polymorphism.
B b = new B();
b.show(); // Now java compiler can decide so is it still dynamic polymorphism?
}
}
第二种情况 -
静态多态是通过重载实现的,如果方法是私有的、静态的或者final的话。
那么对于公共方法和默认方法的重载呢?