当我创建一个球的实例,然后将它的副本复制到另一个变量时,更改原始文件也会更改球的副本。例如,以下面非常简化的示例为例:
class Ball() {
Color _color;
public Ball(Color startColor) {
_color = startColor;
}
public void setColor(Color newColor) {
_color = newColor;
}
}
Ball myBall = new Ball(black);
Ball mySecondBall = myBall;
myBall.setColor(white);
我已经省略了 _color 的访问器方法,但是如果我得到了球的颜色,它们现在都是白色的!所以我的问题是:
- 为什么更改一个对象会更改它的副本,以及
- 有没有办法复制一个对象,以便您可以独立更改它们?