我试图克隆一个对象并更改新克隆对象的成员函数。如果是浅拷贝,并且根据wiki页面,浅拷贝和原始对象指向同一个对象,则应该更改变量值。
CloneExample obj1=new CloneExample();
CloneExample obj2=(CloneExample) obj1.clone();
obj1.a=2;
obj1.c='a';
System.out.println("obj1 real "+obj1.a+" "+obj1.c);
System.out.println("obj2 real "+obj2.a+" "+obj2.c);
obj2.a=99;
obj2.c='z';
System.out.println("obj2 after change "+obj2.a+" "+obj2.c);
System.out.println("obj1 after change "+obj1.a+" "+obj1.c);
System.out.println("obj1="+obj1+" obj2="+obj2);
Run Code Online (Sandbox Code Playgroud)
如果这个克隆是浅拷贝,那么 obj2 和 Obj1 指向同一个引用 obj,改变 obj2 应该反映在 obj1 中。它不会发生。任何人都可以解释一下(我知道克隆旨在为我们提供对象的副本,但如果是浅复制,那么为什么我们需要浅复制?我们应该始终进行深复制)。谢谢你。