首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 存取修飾符完解:public、protected、private、default 差異比較

     編輯:Java 綜合教學

Java 存取修飾符完解:public、protected、private、default 差異比較

Java 提供四種存取層級控制類別、欄位、方法與建構子的可見性:

修飾符中文稱呼同類同包子類(異包)非子類(異包)
public 公共 ✅ ✅ ✅ ✅
protected 受保護 ✅ ✅ ✅ ❌
default
(無修飾符)
預設/包私有 ✅ ✅ ❌ ❌
private 私有 ✅ ❌ ❌ ❌

詳細說明

public(介面存取權限)

限制最寬鬆。被修飾的類別、屬性、方法可跨類別、跨套件(package)存取。通常用於對外公開的 API 介面。

private(無法存取)

限制最嚴格。僅能被該類別自身的物件存取,子類別不可存取,更不可跨套件存取。用於封裝內部實作細節。

protected(繼承存取權限)

介於 public 與 private 之間。可被類別自身方法與子類別存取,即使子類別在不同套件中也可存取。注意:非子類別的同包類別也可存取。

default / package-private(套件存取權限)

不加任何修飾符即為預設模式。僅允許在同一個套件內存取。類別、介面若無修飾符同樣為 package-private。

最佳實踐建議

  • 封裝原則:欄位預設 private,透過 public getter/setter 控制存取
  • 繼承設計:需給子類別覆寫/呼叫的方法用 protected
  • 套件內協作:同一模組內部類別互相調用可用 default
  • 對外 API:公開介面用 public,謹慎暴露

常見誤區

  1. protected ≠ 僅子類別可見,同包非子類別也可見
  2. 介面(interface)的方法隱含 public abstract,欄位隱含 public static final
  3. 外部類別(Top-level class)只能是 public 或 default,不能是 private/protected
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved