1700441880
1700441881
Person p=null;
1700441882
1700441883
try{
1700441884
1700441885
p=(Person)super.clone();
1700441886
1700441887
}catch(CloneNotSupportedException e){
1700441888
1700441889
e.printStackTrace();
1700441890
1700441891
}
1700441892
1700441893
return p;
1700441894
1700441895
}
1700441896
1700441897
}
1700441898
1700441899
程序中,我们描述了这样一个场景:一个父亲,有两个儿子,大小儿子同根同种,所以小儿子对象就通过拷贝大儿子对象来生成,运行输出的结果如下:
1700441900
1700441901
大儿子的父亲是父亲
1700441902
1700441903
小儿子的父亲是父亲
1700441904
1700441905
这很正确,没有问题。突然有一天,父亲心血来潮想让大儿子去认个干爹,也就是大儿子的父亲名称需要重新设置一下,代码如下:
1700441906
1700441907
public static void main(String[]args){
1700441908
1700441909
//定义父亲
1700441910
1700441911
Person f=new Person(“父亲”);
1700441912
1700441913
//定义大儿子
1700441914
1700441915
Person s1=new Person(“大儿子”,f);
1700441916
1700441917
//小儿子的信息是通过大儿子拷贝过来的
1700441918
1700441919
Person s2=s1.clone();
1700441920
1700441921
s2.setName(“小儿子”);
1700441922
1700441923
//认干爹
1700441924
1700441925
s1.getFather().setName(“干爹”);
1700441926
1700441927
System.out.println(s1.getName()+“的父亲是”+s1.getFather().getName());
1700441928
1700441929
System.out.println(s2.getName()+“的父亲是”+s2.getFather().getName());
[
上一页 ]
[ :1.70044188e+09 ]
[
下一页 ]