我是新來的Java,現在我得到了方法重寫一個問題:Java的替代混亂
public class maintest {
public static void main(String[] args) {
new Zi();
}
}
public class Fu {
public Fu() {
show();
}
public void show() {
System.out.println("This is from Fu show");
}
}
public class Zi extends Fu {
public Zi() {
show();
super.show();
}
public void show() {
System.out.println("This is from zi show");
}
}
當我運行這個程序,輸出是:
This is from zi show
This is from zi show
This is from Fu show
誰能給我爲什麼第一輸出線是
This is from zi show
而不是
一些簡單的理解的解釋This is from Fu show
換個角度來說,爲什麼超類中的show方法是隱藏的?
你重寫'Zi'中的方法,所以調用'show()'的'Zi'對象總是調用'Zi'版本。 – dlev
@dlev我不太明白,當super()被調用時,爲什麼它會在Zi的上下文中運行?你可以在內存位置的角度顯示它嗎? (如JVM結構) – Kuan
如果您的Fu構造函數中沒有顯示,您應該看看您的期望。 –