请向我解释为什么当我编译这段代码时结果为0?怎么会这样 ?
class Parentt {
int x = 0;
public void printX() {
System.out.println(x);
}
}
class Child1 extends Parentt {
int x = -1;
}
public class Foo {
public static void main(String[] args) {
new Child1().printX();
}
}
Run Code Online (Sandbox Code Playgroud)
Sot*_*lis 10
您无法覆盖字段,只能隐藏它们.
你的Child1.x领域正在隐藏该Parent.x领域.
字段根据访问它们的引用上的声明类型进行解析,因此
public void printX() {
System.out.println(x);
// equivalent to System.out.println(this.x); where this's declared type is Parent
}
Run Code Online (Sandbox Code Playgroud)
指Parent的是领域.