class Boo {
public int a = 3;
public void addFive() {
a += 5;
System.out.print("f ");
}
}
class Bar extends Boo {
public int a = 8;
public void addFive() {
this.a += 5;
System.out.print("b " );
}
public static void main(String[] args) {
Boo f = new Bar();
f.addFive();
System.out.println(f.a);
}
问问题
73 次
3 回答
3
您不会覆盖实例字段,而只会隐藏它们。因此,当您访问Boo
引用上的实例字段时,您将获得仅在Boo
类中声明的字段。
当你a
在Bar
构造函数中增加时:
this.a += 5;
它正在增加a
声明的 in Bar
,因为它隐藏了a
声明的字段 in Boo
。
于 2013-02-09T22:10:40.403 回答
1
因为你用过Boo
Boo f=new Bar();
引用和字段不是多态的
于 2013-02-09T22:10:05.533 回答
0
a
Bar 中的字段是 Boo 中的阴影字段a
。这是一个单独的字段,但因为它具有相同的名称,所以您必须在 Boo bysuper.a
中引用该字段才能从 Bar 访问它。
上一个问题很好地涵盖了阴影。
于 2013-02-09T22:12:58.170 回答