访问实例对象的私有字段

我有一个类,它有一个名为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节 :

否则,如果成员或构造函数被声明为private,则当且仅当它发生在包含成员或构造函数声明的顶级类(第7.6节)的主体内时才允许访问。

由于victim也是Body类型,因此Body的任何实例都可以访问victim实例的私有成员。

victim是类Body的一个实例,具有该类的所有属性。 每个实例都有一个私有财产轨道。

如果你需要一个类 – 属性使用“私有静态”