[英]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
參數。 我想知道為什么我可以直接訪問實例victim
的private
領域orbits
嗎? 我的意思是該字段是private
,不是通過實例受害者無法訪問的嗎?
隱私不是每個實例-而是每個班級。
該類可以訪問所有實例的私有字段。
例如,方法equals( Object o )
可以將o(如果適用)轉換為相同類型,並將其私有成員與調用equals()的對象進行比較。
因為victim
是Body
的實例,所以它可以訪問Body
實體的任何字段。
根據Java語言規范的6.6.1節 :
否則,如果將成員或構造函數聲明為私有,則僅當訪問發生在包含成員或構造函數的聲明的頂級類(第7.6節)的主體內時,才允許訪問。
由於victim
的類型也Body
,的任何實例Body
可以訪問的私有成員victim
實例。
受害者是類Body的實例,並具有該類的所有屬性。 每個實例都會有一個私有財產軌道。
如果需要類屬性,請使用“私有靜態”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.