【发布时间】:2017-03-31 07:14:56
【问题描述】:
假设我有一个名为Truck 的类,其中一个私有成员变量属于Wheel 类。 Wheel 变量 getWheel 的 getter 将返回对它的引用,如下所示:
class Truck{
private Wheel wheel;
Truck(){
wheel=new Wheel();
}
Wheel getWheel(){
return this.wheel;
}
}
class Wheel{
int color;
}
现在,任何调用getWheel的人都可以随意修改私有成员对象:
class me{
public static void main(String[] args){
Truck ye=new Truck();
Wheel v=ye.getWheel();
v.color=2;
}
}
这会破坏封装,不是吗?
什么是正确的补救措施?
【问题讨论】:
-
返回
wheel的副本。 -
我不认为它破坏了封装,你误解了封装,这并不意味着私有对象不能被修改,你的代码是我们通常做的正常行为。