【发布时间】:2014-11-22 21:08:07
【问题描述】:
在这个问题中,输出为 Rose0。但是当我通过逻辑时,我觉得答案必须是 Rose100 而不是 Rose0。编译器如何区分两个类中的 i 。由于 Rosea 扩展了 _39 类,它也具有超类 i。但是在第 1 行,如果我更改 super.i,那么我会得到 Rose100。这有什么不同?
class _39 {
int i;
_39(){
i=100;
foo();
}
public void foo(){
System.out.println("Flower"+i);}
}
}
public class Rosea extends _39{
int i=200;
Rosea(){
i=300;
}
public void foo(){
System.out.println("Rose"+i);
} //line 1
public static void main(String[] args) {
new Rosea();
}
}
【问题讨论】:
-
在子类范围内,子类变量隐藏了超类。这就是正在发生的一切。
标签: java