首頁 > Java > java教程 > 為什麼 Eclipse 將 Java 繼承中的受保護欄位存取標記為無效?

為什麼 Eclipse 將 Java 繼承中的受保護欄位存取標記為無效?

Patricia Arquette
發布: 2024-12-15 10:28:15
原創
871 人瀏覽過

Why Does Eclipse Flag Protected Field Access as Invalid in Java Inheritance?

理解Java 的Protected 修飾符

Eclipse 對受保護存取的困惑

檢查類別層次結構時,Eclipse 錯誤地將受保護欄位的訪問標記為無效。這種明顯的矛盾是由於對 protected 修飾符的預期功能的誤解而產生的。

根據 Java 語言規範 (JLS),受保護的成員可以在聲明類的包中以及該類的子類中訪問,無論子類的包。在本例中,類別 A 聲明了受保護欄位 protectedInt。

問題分析

在給定的範例中,類別 C 擴充了類別 A,這表示 C 實例應該有權存取 A 的 protectedInt 欄位。然而,Eclipse 報告說,在 C 中使用 A 的實例時,存取被禁止。

解決差異

解決方案在於理解受保護的存取僅限於聲明類別的子類別。因此,A 的 protectedInt 欄位只能由 C 的實例或 C 的子類別存取。這是 Eclipse 錯過的一個重要區別。

為了說明,透過C 的實例訪問protectedInt 將按預期工作:

C c = new C();
System.out.println(c.protectedInt); // Access to 'protectedInt' allowed
登入後複製

最終,protected 修飾符提供了對字段和方法的受控訪問,允許子類繼承它們,同時保持封裝在一個包裹。

以上是為什麼 Eclipse 將 Java 繼承中的受保護欄位存取標記為無效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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