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?
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.
Because victim
is an instance of Body
, it can access any field of a Body
isntance.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With