我在Java重寫中有點混亂。假設我們有以下繼承:Java重寫方法
class A{
public A(){
}
void show(){
System.out.println("SuperClass");
}
}
class B extends A{
@Override
void show(){
System.out.println("SubClass");
}
}
public class Test {
public static void main(String[] args) {
B b = new B();
b.show();
}
}
顯然,class B
覆蓋了由該class A
繼承的方法show()
。爲什麼不b.show();
打印信息System.out.println("SuperClass");
以及因爲class B
現在有方法show()
從class A
?
謝謝。
如果是的話,重寫方法會有什麼意義? –
@ sp00m那種。該方法仍然存在,但您可以通過'super'訪問它。 – aruisdante
你好邁克與繼承關係,其多態行爲,即方法體的方法調用發生在運行時,即當jvm調用B b = new B();所以B對象是類B的類型,所以它顯示B的方法的方法被覆蓋1,如果你把super()你可以得到一個父類。 – Kogile