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

Java 存取修飾符完整解析:類、欄位、方法三大維度

     編輯:Java 相關知識

Java 提供豐富的存取修飾符控制類、欄位、方法的可見性與行為特性。本文系統整理三大維度的修飾符分類、語義與最佳實踐。

一、類的修飾符

分類修飾符說明
存取控制public公共類,任何地方可訪問。主類必須為 public
(無修飾符)包私有,僅同包內可訪問
非存取控制abstract抽象類,不可實例化,可包含抽象方法
final最終類,不可被繼承,方法隱含 final

二、欄位(屬性)修飾符

存取控制(四種)

  • public:全域可訪問,破壞封裝,慎用
  • private:僅本類可訪問,封裝核心
  • protected:本類 + 同包 + 子類(跨包)可訪問
  • private protected:極少用,本類 + 子類可訪問(已淘汰)

非存取控制(四種)

  • static:類屬性,共享單一儲存空間,所有實例見相同值
  • final:常量,初始化後不可變,編譯期常量折疊優化
  • volatile:多線程可見性保證,禁止指令重排,不保證原子性
  • transient:序列化時忽略該欄位,不持久化

三、方法修飾符

存取控制(同欄位四種)

  • public / private / protected / private protected

非存取控制(五種)

  • abstract:無方法體,子類必須實作(除非子類也 abstract)
  • static:類方法,無 this 參考,只能訪問 static 成員
  • final:不可覆寫,鎖定實作。private 方法隱含 final
  • native:本地方法,由 C/C++ 實作,透過 JNI 呼叫
  • synchronized:同步方法,隱含鎖為 this(實例方法)或 Class 物件(static 方法)

關鍵組合規則

  • abstract 不能與 final、static、private、native、synchronized 共存
  • static 不能與 abstract 共存(介面方法除外,JDK 8+ 支援 static/default)
  • volatile 僅能修飾欄位,不能修飾方法/類
  • transient 僅能修飾欄位,static/transient 欄位不序列化

最佳實踐建議

  1. **封裝優先**:欄位預設 private,提供公共 getter/setter
  2. **最小權限**:類、方法預設包私有,需要時再放寬
  3. **常量定義**:public static final 命名全大寫下劃線分隔
  4. **線程安全**:共享可變狀態用 volatile 或同步機制,不可變物件優先
  5. **序列化控制**:敏感資料、衍生欄位加 transient
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved