我有三個類如下,類b和c擴展類a。我想知道爲什麼代碼沒有讀取b和c變量的值。我的主要方法爲什麼子類不會覆蓋其超類變量的值?
public class a{
protected int myvalue = 1;
}
public class b extends a{
private int myvalue = 2;
}
public class c extends a{
private int myvalue = 3;
}
體
ArrayList<a> myList= new ArrayList();
myList.add(new b());
myList.add(new c());
for(int i =0;i<myList.size();i++)
System.err.println("value is:" + myList.get(i).myvalue);
輸出
1
1
在一個類中,與超類中的字段具有相同名稱的字段隱藏超類的字段,即使它們的類型與 不同。在子類中,超類中的字段不能是其簡單名稱引用的 。相反,該字段必須通過super訪問 ,這將在下一節中介紹。一般來說 說,我們不建議隱藏字段,因爲它使代碼難以讀取 。
-1用於不可編譯的代碼。 'myList中(我)'?來吧,不要對我們這樣做,如果你不希望我們成功,也不要馬虎。 –
這是一個錯字的人很容易 – Jack
但它不會編譯。就像您在for循環中訪問私有變量一樣。 – BitNinja