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

Java私有成員訪問權限:同類不同實例間可互訪私有字段

     編輯:程式設計綜合問答

代碼中 class A 的方法 f() 創建新實例 a 並訪問 a.i、a.s(均為 private),編譯通過且運行正常。這揭示了Java private 的真實含義:

核心結論

private 修飾的成員,對同一頂層類內部的所有代碼可見,與實例無關。

說明

  • class A 內部(包括靜態方法、實例方法、構造器、內部類)均可直接讀寫 A 的任何 private 字段/方法,無論是 this 還是其他 A 實例。
  • 這與C++ private(類級可見)一致,不同于「實例私有」(如Ruby private 方法只能隱式調用)。

設計意圖

便於實現「拷貝構造」、「工廠方法」、「比較器」等需要訪問同類其他實例內部狀態的場景,無需暴露公共Getter/Setter破壞封裝。

public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof A)) return false;
    A other = (A) o;
    return this.i == other.i && this.s.equals(other.s); // 直接訪問 other 私有字段
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved