爲什麼下面的代碼打印「1」?java covariant返回類型
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);
}
}
但我回到新B() – kris979 2011-05-26 10:41:37
但該方法定義返回'A'。所以'A.x'就是被訪問的。 – Bozho 2011-05-26 10:44:09
@kris您正在調用使用'A'的引用方法,因爲它有一個類型爲'A'的 – 2011-05-26 10:48:00