喜公共變量我創建一個子類的對象,並嘗試調用子類的變量,但它被稱爲超級類變量都超類和子類具有相同的類變量名 。重寫超和子類
在此輸出名稱是「孩子」期待爲「o2.name;」但輸出是「基地」。請清楚解釋我...
喜公共變量我創建一個子類的對象,並嘗試調用子類的變量,但它被稱爲超級類變量都超類和子類具有相同的類變量名 。重寫超和子類
在此輸出名稱是「孩子」期待爲「o2.name;」但輸出是「基地」。請清楚解釋我...
在Java中,你不會覆蓋字段,你只是隱藏它們。 在運行時,java會檢查您正在使用的對象的引用類型並調用該變量。
變量甚至不必是相同的類型;他們只是分享名字的兩個變量。
檢查這個帖子:
Overriding member variables in Java
Overriding a super class's instance variables
Is there a way to override class variables in Java?
變量不是多態在Java中;他們不會互相推翻。當你在一個子類中創建一個相同名字的變量時,這就是所謂的隱藏。生成的子類現在實際上具有兩個屬性。您可以使用super.var或((SuperClass)this)訪問超類.var不支持變量重寫。var
Java不支持變量重載。所以,當你寫:
OverrridingBase o2= new Overridingchild();
System.out.println(o2.name);
JVM將O2(即OverrridingBase)的引用類型,並將打印的OverrridingBase
您不容忽略vairables名的值。它只是訪問它可以從類「ovrriddingBase」訪問的第一個變量'name'。 – SomeJavaGuy
我正在爲子類創建對象「ovrriddingBase o2 = new ovrriddingChild();」然後我嘗試調用子類變量「名稱」。我期待答案「孩子」,但我有「基地」 –
請張貼代碼片段,而不是截圖。 – dimo414