class A {
int x =5;
}
class B extends A{
int x =6;
}
public class CovariantTest {
public A getObject() {
return new A();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
CovariantTest c1 = new SubCovariantTest();
System.out.println(c1.getObject().x);
}
}
class SubCovariantTest extends CovariantTest {
public B getObject(){
return new B();
}
}
據我所知,JVM選擇基礎上的真實類型的對象的方法。這裏的真正類型是SubCovariantTest,它定義了一個覆蓋方法getObject。
該程序打印5,而不是6.爲什麼?
你做了解釋它比我...它實際上樣的一個棘手的一個字一個更好的工作...... – LorenVS 2009-12-17 00:06:13