首頁 >Java >java教程 >為什麼我的構造函數中的字段值未正確初始化?

為什麼我的構造函數中的字段值未正確初始化?

Barbara Streisand
Barbara Streisand原創
2024-12-02 19:11:12641瀏覽

Why Are My Field Values Not Initialized Correctly in My Constructor?

為什麼陰影會幹擾字段初始化

您的類別具有名為容量和元素的字段,您嘗試在構造函數中初始化這些字段。但是,您在建構期間設定的值不會在查詢欄位值時反映出來。此行為源自於一個名為 遮蔽 的概念。

當兩個變數共用相同名稱但存在於不同範圍內時,就會發生遮蔽。在建構函式中,您可以宣告也稱為「容量」和「元素」的局部變數。這些局部變數優先於建構函數範圍內的對應字段,從而有效地遮蔽它們。

因此,對局部容量變數的賦值會初始化該變量,而不是欄位。同樣,雖然您初始化 elements 變量,但它的賦值不會影響字段,因為局部變量優先。因此,欄位容量保持預設值 (0),元素設定為 null。

要解決此問題,請刪除建構函式中的局部變數聲明,以允許名稱容量和元素引用實例變數。

或者,如果需要保留建構子參數,請使用限定名稱來明確引用實例變數。

以上是為什麼我的構造函數中的字段值未正確初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn