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

Java private 私有變數跨實例訪問:同類不同實例可互訪私有欄位、參數與欄位解析

     編輯:程式設計綜合問答

代碼片段


class A {
    private int x = 3;
    public static void main(String[] args) {
        new A().func(new A());
    }
    public void func(A a) {
        System.out.println(a.x); // 編譯通過,輸出 3
    }
}

核心規則

private 訪問權限針對「類」,而非「實例」。
同一個類別內的程式碼,可任意存取**任意實例**的 private 成員。

逐行解析

對比:不同類別不可訪問


class B {
    void test(A a) {
        // System.out.println(a.x); // 編譯錯誤:x 在 A 中為 private
    }
}

最佳實踐提醒

  • 雖然同類可互訪 private,但**語意上**應視為內部實現細節,盡量透過公共方法 (Getter/Setter) 存取,便於未來重構。
  • 建構子/工廠方法中常用此特性複製/比較實例內部狀態。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
代碼含義
new A()建立 A 的實例 #1 (隱式 this)
.func(new A())呼叫實例 #1 的 func 方法,參數為新建實例 #2
public void func(A a)方法參數 a 為 **A 類型的引用**,指向實例 #2
a.x存取參數 a 所指實例 #2 的私有欄位 x,**合法**