我無法理解以下輸出。Java繼承字段
我不知道爲什麼輸出是10,我覺得行A a = new B()
創建B類的新實例,我想結果應該是20
class A {
int i = 10;
}
class B extends A {
int i = 20;
}
public class MainClass {
public static void main(String[] args) {
A a = new B();
System.out.println(a.i);
}
}
爲什麼這個是這樣的..請說明。
你不重寫值我在這裏,你的影子 –
看看這篇文章。 http://stackoverflow.com/questions/685300/is-there-a-way-to-override-class-variables-in-java –
多態性不適用於字段,它爲方法做的方式。你使用了一個'A'類型的變量來查找字段'i',所以你得到'A'類型的副本,而不是類型'B'中的副本。當你查看字段時,重要的是變量的類型,而不是對象的類。 –