为什么下面的代码会输出“1”?
class A {
int x = 1;
}
class B extends A {
int x = 2;
}
class Base {
A getObject() {
System.out.println("Base");
return new B();
}
}
public class CovariantReturn extends Base {
B getObject() {
System.out.println("CovariantReturn");
return new B();
}
/**
* @param args
*/
public static void main(String[] args) {
Base test = new CovariantReturn();
System.out.println(test.getObject() instanceof B);
System.out.println(test.getObject().x);
}
}
A
。所以访问的是A.x
。 - BozhoA
的引用调用方法,在其中它具有返回类型A
。 - jmjinstanceof
检查发生在运行时,而A.x
在编译时实现。 - Bozho