[英]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.