我是新来的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构造函数中没有显示,您应该看看您的期望。 –