在Java 中重寫類別變數:一個隱藏的謎團
這個問題來自一個有趣的程式碼片段,它圍繞著類別層次結構,特別是圍繞類別層次結構一個名為Dad 的父類別和一個名為Son 的子類別。這兩個類別都擁有一個名為 me 的類別變量,旨在表示它們的身份。但是,當實例化 Son 物件並呼叫其 printMe() 方法的 doIt() 方法列印“dad”而不是預期的“son”時,就會出現問題。
類別變數可以是重寫?
為了回答這個問題,我們深入研究 Java 中繼承和重寫的概念。重寫是指子類別修改其超類別中定義的方法的行為的能力。然而,這個概念並沒有擴展到類別變數。
隱藏與覆蓋
對於類別變量,發生的不是覆蓋而是「隱藏」。 「當子類別宣告一個與其超類別中的變數同名的類別變數時,它會隱藏繼承的變數而不是取代它。隱藏變數在子類別中被有效地屏蔽。
隱藏值
回到範例,Son 中的me 宣告隱藏了繼承自的me 變數爸爸。中的隱藏變數保留其值“dad”,並且是在 printMe() 方法中存取和列印的變數。 >為了達到列印「son」的預期結果,另一種方法是利用子類別的建構函式中定義的實例變數(非靜態變數)。的類別變數。中的變數。了更合適的解決方案。
以上是為什麼我的 Java 子類別會列印父類別的靜態變數而不是它自己的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!