問題:
考慮兩個類別A 和C,其中C 擴展了A。假設A 將實例變數宣告為 protected int protectedInt = 1。儘管期望受保護的成員應該可以在對於其他套件中的子類,Eclipse 將對類 C 中的 protectedInt 的存取標記為不可見。
答案:
Java protected 修飾符允許存取其自己包中的成員以及子類,但僅當透過子類的實例進行存取時。這是因為受保護的存取範圍僅限於子類別類型,而不是聲明受保護成員的類別。
根據 Java 語言規範 (JLS),「僅允許在子類體內進行存取」 C 的 S。 」這意味著即使C 擴展了A,也不允許從A 的實例直接訪問protectedInt。
解決方案:
訪問子類中的protected 成員,必須使用子類類型。 (C) 的實例進行的,因此受保護的成員是可見的。
以上是為什麼我無法從另一個套件存取 Java 子類別中的受保護成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!