下列代码运行的结果是:( )
class Foo {
public int a; public Foo() { a = 3; }
public void addFive() { a += 5; }
}
class Bar extends Foo {
public int a; public Bar() { a = 8; }
public void addFive() { this.a += 5; }
}
public class TestFoo {
public static void main(String[] args) {
Foo foo = new Bar();
foo.addFive();
System.out.println("Value: " + foo.a);
}
}Value: 3
Value: 8
Value: 13
Value: 18
首先,实例变量不会重载或者重写。
当子类和超类存在同名实例变量时,
在类内部,"this."指代当前类的实例变量,"super."指代超类的实例变量。
在类外部,访问实例变量与引用类型有关。
当子类和超类存在同名实例变量时,
在类内部,"this."指代当前类的实例变量,"super."指代超类的实例变量。
在类外部,访问实例变量与引用类型有关。