在Java中支持对象的克隆操作,直接使用Object类中的clone()方法即可,方法定义如下:
protected Object clone() throws CloneNotSupportedException
以上方法是后保护的类型,所以在子类中必须覆写此方法,而且覆写之后应该扩大访问权限,这样才能被外部调用,但是具体的克隆方法的实现还是在Object中,所以在覆写的方法中只需要调用Object类中的clone()方法即可完成操作,而且在对象所在的类中必须实现Cloneable接口才可以完成对象的克隆操作。
但是如果直接查询JDK文档会发现Cloneable接口中并没有任何的方法定义,所以此接口在设计上称为一种标识接口,表示对象可以被克隆。
【对象克隆的操作】
class ClonePerson implements Cloneable
{
private String name=null;
public ClonePerson(String name){
this.name=name;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public Object clone() throws CloneNotSupportedException{
return super.clone();
}
public String toString(){
return "姓名:"+this.getName();
}
}
public class CloneDemo
{
public static void main(String[] args)throws Exception{
ClonePerson p1=new ClonePerson("张三");
ClonePerson p2=(ClonePerson)p1.clone();
p2.setName("Tom");
System.out.println(p1);
System.out.println(p2);
}
}