Знаете ли вы, как сделать объект изменяемым только внутри специального класса?
В этом примере я хочу, чтобы объект PrivateObject был изменяемым (инкрементируемым) только внутри класса Box
и больше нигде. Есть ли способ добиться этого?
public class Box {
private PrivateObject prv;
public void setPrivateObject(PrivateObject p){
prv = p;
}
public void changeValue(){
prv.increment();
}
}
public class PrivateObject {
private value;
public increment(){
value++;
}
}
PrivateObject priv = new PrivateObject ();
Box box = new Box();
box.setPPrivateObject(priv);
box.changevalue();
priv.increment(); // I don't want it to be changeable outside the Box class!
В C++ я бы сделал все свойства и методы PrivateObject
закрытыми и объявил класс Box
дружественным для класса PrivateObject
.