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

Java 存取修飾詞速查:public、protected、private 逐成員獨立控制

     編輯:Java 相關知識

Java 的存取修飾詞(public、protected、private)直接標註在**每個成員定義之前**,對該特定成員獨立生效。這與 C++「修飾詞管轄後續所有定義、直到下一個修飾詞」的區塊式機制截然不同。本文將快速對比兩者差異,並梳理四大存取層級的核心規則。

Java vs C++:根本機制差異

語言機制範例
Java**逐成員獨立標註**private int a; public void f() {} — 各自獨立
C++**區塊管轄**private: int a; void f(); public: int b; — 修飾詞影響後續所有

Java 方式更細粒度、更不易因程式碼移動而意外改變存取層級。

四大存取層級速查表

修飾詞關鍵字同類別同套件子類別(跨套件)任意類別適用對象
publicpublic✓✓✓✓類別、介面、欄位、方法、建構子
Protectedprotected✓✓✓✗欄位、方法、建構子(類別不可)
Friendly(無修飾詞)✓✓✗✗類別、介面、欄位、方法、建構子
Privateprivate✓✗✗✗欄位、方法、建構子、巢狀類別

類別層級存取:只有兩種選擇

  • public:跨套件可見
  • friendly (無修飾詞):僅同套件可見
  • ❌ 類別**不可**宣告 private 或 protected(巢狀類別除外)

核心設計原則

  1. 預設用 friendly:成員無修飾詞即為套件內協作,最符合「高內聚」
  2. 對外契約才用 public:介面、關鍵方法、常數
  3. 繼承擴充點用 protected:模板方法、鉤子、給子類別的內部存取
  4. 實作細節用 private:欄位、輔助方法、建構子(控制建立時)

修飾詞放置位置

public class MyClass {           // 類別修飾詞:public 或無
    private int field;           // 欄位修飾詞
    protected void helper() {}   // 方法修飾詞
    public MyClass() {}          // 建構子修飾詞
    class Nested { }             // 巢狂類別可用 private/protected
}

每個修飾詞**只管緊隨其後的那個定義**,互不干擾。這讓 Java 存取控制既精確又直觀。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved