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);
}
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
aBar 中的字段是 Boo 中的阴影字段a。这是一个单独的字段,但因为它具有相同的名称,所以您必须在 Boo bysuper.a中引用该字段才能从 Bar 访问它。
上一个问题很好地涵盖了阴影。
于 2013-02-09T22:12:58.170 回答