當我創建一個球的實例,然後將其複製到另一個變量時,更改原始參數會更改球的副本。例如,採取非常簡化的例子如下:更改一個變量會改變另一個變量
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的訪問方法,但如果我拿到球的顏色,他們兩人現在都是白色的!所以我的問題是:
- 爲什麼改變一個對象改變它的一個副本,並
- 有沒有辦法複製的對象,以便您可以獨立改變他們?
'myBall'不是'Ball';這是對'Ball'的引用。 – 2012-07-06 20:25:10
有沒有辦法制作一個對象的副本,以便可以在不更改新對象的情況下更改原始對象? – 2012-07-06 20:29:24
@LouisWasserman:當然。我說錯了什麼? – Cratylus 2012-07-06 20:29:54