我的代码是:
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 TestClass {
public static void main(String[]args) {
Foo f = new Bar();
f.addFive();
System.out.println(f.a);
}
}
输出:
b 3
请向我解释一下,为什么这个问题的输出是“b3”,而不是“b13”,因为方法已经被覆盖了?
发布于 2012-08-16 02:37:40
由于您正在执行f.a
,因此您将从Foo
类中获得a
的值。如果您调用了一个方法来获取值,例如getA()
,那么您将从类Bar
中获取值。
https://stackoverflow.com/questions/11974428
复制相似问题