Java“把戏”,重新定义子类成员
我正在为Java考试进行训练,我在去年的科目中遇到了一些我不理解的东西。这是代码
class Mother {
int var = 2;
int getVar() {
return var;
}
}
class Daughter extends Mother {
int var = 1;
int getVar() {
return var;
}
public static void main(String[] args) {
Mother m = new Mother();
System.out.println(m.var);
System.out.println(m.getVar());
m = new Daughter();
System.out.println(m.var);
System.out.println(m.getVar());
}
}
问题是“这个程序的输出是什么?我本来会选择2 2 1 1,但是在编译和运行这段代码时,我得到2 2 2 1。
任何人都可以解释我为什么?
感谢您的阅读!