簡體   English   中英

訪問實例對象的私有字段

[英]Access private field of a instance object

我有一個類,該類具有一個名為orbits字段(它的類型與我的類Body相同,並且具有private修飾符):

public class Body {

     // I defined it as private field
     private Body orbits = null;

     public Body getOrbits(){
         return orbits;
     }

     public void setOrbits(Body orbits){
    this.orbits = orbits;
     }

     public void capture(Body victim){
        //Why 'victim' can access 'orbits' ?
        victim.orbits = this;
     }
}

在該類中,我定義了一個名為capture(Body victim) ,該方法具有一個類型為Body參數。 我想知道為什么我可以直接訪問實例victimprivate領域orbits嗎? 我的意思是該字段是private ,不是通過實例受害者無法訪問的嗎?

隱私不是每個實例-而是每個班級。

該類可以訪問所有實例的私有字段。

例如,方法equals( Object o )可以將o(如果適用)轉換為相同類型,並將其私有成員與調用equals()的對象進行比較。

因為victimBody的實例,所以它可以訪問Body實體的任何字段。

根據Java語言規范的6.6.1節

否則,如果將成員或構造函數聲明為私有,則僅當訪問發生在包含成員或構造函數的聲明的頂級類(第7.6節)的主體內時,才允許訪問。

由於victim的類型也Body ,的任何實例Body可以訪問的私有成員victim實例。

受害者是類Body的實例,並具有該類的所有屬性。 每個實例都會有一個私有財產軌道。

如果需要類屬性,請使用“私有靜態”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM