繁体   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