Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Wednesday, August 24, 2016

Access private field of a instance object

Access private field of a instance object


I have a class, which has one field named orbits (it has the same type as my class Body and has the private modifier):

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;       }  }  

In the class, I defined a method named capture(Body victim), which has one parameter with type Body. I am wondering in the method why I can directly access the private field orbits of instance victim ? I mean the field is private , isn't it non-accessible through the instance victim?

Answer by Andy Thomas for Access private field of a instance object


Privacy is not per instance - it's per class.

The class can access the private fields of all instances.

For example, the method equals( Object o ) can cast o (if appropriate) to the same type, and compare its private members with the object on which equals() was called.

Answer by Ziyao Wei for Access private field of a instance object


Because victim is an instance of Body, it can access any field of a Body isntance.

Answer by Rahul Bobhate for Access private field of a instance object


Since victim is also of type Body, the any instance of Body can access the private members of the victim instance.

Answer by Eng.Fouad for Access private field of a instance object


According to section 6.6.1 of the Java Language Specification:

Otherwise, if the member or constructor is declared private, then access is permitted if and only if it occurs within the body of the top level class (7.6) that encloses the declaration of the member or constructor.

Answer by Michael for Access private field of a instance object


victim is an instance of class Body and has all Attributes of that class. Every instance will have a private property orbits.

If you need a class-Attribute use "private static"


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72

0 comments:

Post a Comment

Popular Posts

Powered by Blogger.