//对象复制
public class A{
public static void main(String[] args){
B obj=new B(20,"Jack");
System.out.println("被复制的对象obj.age="+obj.age+"obj.name="+obj.name);
B objClone=(B)obj.clone();
objClone.age=30;
objClone.name="Joye";
System.out.println("被复制的对象objClone.age="+objClone.age+
"objClone.name="+objClone.name);
}
}class B implements Cloneable{
int age;
String name;
B(int age,String name){
this.age=age;
this.name=name;
}
public Object clone()throws CloneNotSupportedException{
try{
B obj=(B)super.clone();
}
catch(CloneNotSupportedException e){
System.err.println(e);
}
return obj;
}
}//请高书门帮忙修改此程序,并说出错误的原因
//谢了
public class A{
public static void main(String[] args){
B obj=new B(20,"Jack");
System.out.println("被复制的对象obj.age="+obj.age+"obj.name="+obj.name);
B objClone=(B)obj.clone();
objClone.age=30;
objClone.name="Joye";
System.out.println("被复制的对象objClone.age="+objClone.age+
"objClone.name="+objClone.name);
}
}class B implements Cloneable{
int age;
String name;
B(int age,String name){
this.age=age;
this.name=name;
}
public Object clone()throws CloneNotSupportedException{
try{
B obj=(B)super.clone();
}
catch(CloneNotSupportedException e){
System.err.println(e);
}
return obj;
}
}//请高书门帮忙修改此程序,并说出错误的原因
//谢了
谢了
public static void main(String[] args){
B obj=new B(20,"Jack");
System.out.println("被复制的对象obj.age="+obj.age+"obj.name="+obj.name);
B objClone=(B)obj.clone();
objClone.age=30;
objClone.name="Joye";
System.out.println("被复制的对象objClone.age="+objClone.age+
"objClone.name="+objClone.name);
System.out.println("被复制的对象obj.age="+obj.age+"obj.name="+obj.name);
}
}class B implements Cloneable{
int age;
String name;
B obj;
B(int age,String name){
this.age=age;
this.name=name;
}
public Object clone(){
try{
obj=(B)super.clone(); }
catch(Exception e){
System.err.println(e);
}
obj.name=name;
return obj;
}
}
try {
B obj = (B) super.clone();
return obj;
} catch (CloneNotSupportedException e) {
System.err.println(e);
return null;
}这个方法很明显就没有保证所有模块都有返回值,所以会出错
至于clone()这个方法,有深复制,和浅复制之分,就复制就是
完全重新生成一个对象,而且浅复制就是对原来对象的引用,我记得
有一位高手是这样说的:(在哪里看到的我忘记了,也不想找了,请那位
高人原谅)老师发布了一道作业,全班人只有小明做了,如果老师要检查作业
那么大家都跑去跟小明借(小明也肯借),然后拿去给老师看,但是如果老师叫
大家一起交上去,那么就完蛋了,这就叫做浅复制,为应付这种情况,大家都借小
明的作业copy了一份,那么,如果要大家一起交也不怕了,这就叫深复制
楼主的情况就是你借小明的作业,然后把小明的作业改了,所以输出也就改了