瀏覽Java 的受保護存取修飾符
這種誤解是由授予受保護訪問的特定上下文引起的。 JLS(第 6.6.2 節)澄清了受保護的成員確實可以從其他套件中的子類別訪問,但僅限於子類別的實例或子類別的子類別的實例。 具體來說,受保護的成員只能是如果E 的類型是,則透過欄位存取表達式(例如,E.Id)或方法呼叫表達式(例如,E.Id(.. .))存取子類別本身(即S)或S 的子類別。
在給定場景中,嘗試存取 a.protectedInt 的程式碼使用 A 的實例作為表達式 E。由於 A 不是子類別對於 C 來說,根據 JLS 規則,這種存取是不允許的。
因此,protected 修飾符會授予對子類別中受保護成員的存取權限,但僅限於子類別的實例或它的子類別。
以上是為什麼不同套件中的子類別不能存取 Java 中其超類別的受保護成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!