在这些类中考虑int变量:
class Foo {
public int a = 3;
public void addFive() { a += 5; System.out.print("f "); }
}
class Bar extends Foo {
public int a = 8;
public void addFive() { this.a += 5; System.out.print("b " ); }
}
public class test {
public static void main(String [] args){
Foo f = new Bar();
f.addFive();
System.out.println(f.a);
}
}
我明白方法addFive()已经在子类中被覆盖,并且在类测试中,当引用子类的基类引用被用于调用重写方法时,调用子类版本的addFive.
但是公共实例变量呢?当基类和派生类都有相同的变量时会发生什么?
上述程序的输出是
b 3
这是如何发生的?