考虑有一段代码:
public class Base {
int a = 1;
public int getA() {
System.out.print("Super");
return a;
}
public static void main(String[] argv) {
Base base = new Sub();
System.out.println(base.a + " " + base.getA());
System.out.println(base.getA());
System.out.println(base.a);
}
}
class Sub extends Base {
int a = 2;
public int getA() {
System.out.print("Sub");
return a;
}
}
输出是:
Sub1 2
Sub2
1
有人可以解释一下输出吗?为什么System.out.println(base.a + " " + base.getA());
并System.out.println(base.getA());System.out.println(base.a);
给出不同的输出?
我认为输出System.out.println(base.a + " " + base.getA());
应该是Sub2 1
你有什么想法?