定义:用原型实例指定创建对象的种类,并通过拷贝这些原型 创建新的对象。
实现
1.定义具体类
public class WxInfo implements Cloneable {
String name;
int age;
String area;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setArea(String area) {
this.area = area;
}
@Override
protected WxInfo clone() throws CloneNotSupportedException {
WxInfo info = null;
info = (WxInfo) super.clone();
return info;
}
@Override
public String toString() {
return "WxInfo{" +
"name='" + name + '\'' +
", age=" + age +
", area='" + area + '\'' +
'}';
}
}
2.测试
WxInfo wxInfo = new WxInfo();
wxInfo.setAge(20);
wxInfo.setName("wang");
wxInfo.setArea("xa");
try {
//通过拷贝创建对象
WxInfo wxInfo1 = wxInfo.clone();
wxInfo1.setArea("sz");
wxInfo1.setAge(22);
wxInfo1.setName("xiaowang");
System.out.println(wxInfo1.toString());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
System.out.println(wxInfo.toString());
}
拷贝
Object类提供的clone方法,不会拷贝对象中的内部数组和引用对象,导致它们仍旧指向原来对象的内部元素地址,这种拷贝叫做浅拷贝
拷贝对象的同时,也将它内部的引用对象进行拷贝,使得每个拷贝的对象之间无任何关联,这种拷贝就是深拷贝。