访问实例对象的私有字段
我有一个类,它有一个名为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节 :
否则,如果成员或构造函数被声明为private,则当且仅当它发生在包含成员或构造函数声明的顶级类(第7.6节)的主体内时才允许访问。
由于victim
也是Body
类型,因此Body
的任何实例都可以访问victim
实例的私有成员。
victim是类Body的一个实例,具有该类的所有属性。 每个实例都有一个私有财产轨道。
如果你需要一个类 – 属性使用“私有静态”