结果是:
x=(44,66)
y=(44,66)
x=(55,77)
y=(44,77)

解决方案 »

  1.   

    主要是最后一个结果吧。
    执行clone方法以后,x.w和y.w指向同一个对象,所以x.w的属性改变后,y.w的属性也一样改变。
      

  2.   

    我想楼主主要是想考我们 影子clone与深度clone 的概念吧 1、public Object clone()throws CloneNotSupportedException{
    return super.clone();
    } 2、Widget y=(Widget)x.clone();
      

  3.   

    回复人: liweigu(liweigu) ( ) 信誉:100  2004-07-15 22:09:00  得分: 0  
     
     
       主要是最后一个结果吧。
    执行clone方法以后,x.w和y.w指向同一个对象,所以x.w的属性改变后,y.w的属性也一样改变。这个解释没错,虽然对象的引用确实是clone了一份,但是两个引用指向的是同一个对象,
    所以其中一个使对象改变,另外一个指向的同一对象当然也要改变了。这就是如果对象的属性中包含对象,那么clone后,两个对象并不是完全没有关系的。如果要避免这种现象,就要用深度克隆。