首頁 > Java > java教程 > 為什麼我的 Java 子類別會列印父類別的靜態變數而不是它自己的?

為什麼我的 Java 子類別會列印父類別的靜態變數而不是它自己的?

Barbara Streisand
發布: 2024-12-01 06:05:20
原創
829 人瀏覽過

Why Does My Java Subclass Print the Parent Class's Static Variable Instead of Its Own?

在Java 中重寫類別變數:一個隱藏的謎團

這個問題來自一個有趣的程式碼片段,它圍繞著類別層次結構,特別是圍繞類別層次結構一個名為Dad 的父類別和一個名為Son 的子類別。這兩個類別都擁有一個名為 me 的類別變量,旨在表示它們的身份。但是,當實例化 Son 物件並呼叫其 printMe() 方法的 doIt() 方法列印“dad”而不是預期的“son”時,就會出現問題。

類別變數可以是重寫?

為了回答這個問題,我們深入研究 Java 中繼承和重寫的概念。重寫是指子類別修改其超類別中定義的方法的行為的能力。然而,這個概念並沒有擴展到類別變數。

隱藏與覆蓋

對於類別變量,發生的不是覆蓋而是「隱藏」。 「當子類別宣告一個與其超類別中的變數同名的類別變數時,它會隱藏繼承的變數而不是取代它。隱藏變數在子類別中被有效地屏蔽。

隱藏值

回到範例,Son 中的me 宣告隱藏了繼承自的me 變數爸爸。中的隱藏變數保留其值“dad”,並且是在 printMe() 方法中存取和列印的變數。 >為了達到列印「son」的預期結果,另一種方法是利用子類別的建構函式中定義的實例變數(非靜態變數)。的類別變數。中的變數。了更合適的解決方案。

以上是為什麼我的 Java 子類別會列印父類別的靜態變數而不是它自己的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板