LONGEPASS
Q159.

Java 程式語言在某類別(Class)中存取權限為protected 的資料變數,可以被下列那些類別存取(Access)?

電腦軟體設計(JAVA) · 乙級 · Java · Q159

難易度分析

3 / 5

本題要求精確區分 Java 存取權限的複雜邏輯,且採多選形式,考生必須同時判別多個不同情境的正確性,對概念的掌握度要求較高。

正確答案 (複選):①, ②, ④

  • ① 同一個package 內,但未繼承此類別的其他類別:protected 成員允許同一 package 內的所有類別存取,無論是否繼承該類別,這是因為 protected 包含 package-private 的存取範圍。
  • ② 同一個package 內,且繼承此類別的子類別(Subclass):同一 package 內的子類別自然可以存取父類別的 protected 成員,因為同時滿足同套件與繼承關係兩個條件。
  • ④ 在其他不同package 中,繼承此類別的子類別:不同 package 中的子類別可以透過繼承機制存取父類別的 protected 成員,這是 protected 與 default (package-private) 的核心差異。

錯誤選項解析

  • ③ 在其他不同package 中,且未繼承此類別的其他類別:不同 package 且未繼承的類別無法存取 protected 成員,因為 protected 不允許跨套件的無關類別直接存取,此選項應為不可存取。
Learning Tip

"protected 的存取範圍等於 default (同套件可存取) + 跨套件子類別可繼承。常考陷阱在於混淆 private(僅同類別)、default(僅同套件)、protected(同套件+跨套件子類別)、public(無限制)四層級的差異。實務上設計 API 時,應謹慎使用 protected 以保留子類別擴充彈性,同時避免過度暴露內部實作細節。"

學員答題分佈

①同一個package 內,但未繼承此類別的其他類別0%
②同一個package 內,且繼承此類別的子類別(Subclass)0%
③在其他不同package 中,且未繼承此類別的其他類別0%
④在其他不同package 中,繼承此類別的子類別0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目