私はオブジェクトを特別クラス内でのみ変更可能にする方法を知っていますか? この例では、私はオブジェクトPrivateObjectがBoxクラス内でのみ変更可能(増分可能)であることを望みます。これを得る方法はありますか? javaのような友人クラスのメカニズム
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 dont want it to be changable outside the Box class!
は、C++では、私はすべてのPrivateObjectのプロパティとメソッドをプライベートになるだろう、とPrivateObjectクラスのフレンドとしてBoxクラスを宣言します。
関連するhttp://stackoverflow.com/questions/182278/is-there-a-way-to-simulate-the-c-friend-concept-in-java –