对象克隆
一、具体内容
克隆是一个对象的复制概念,但是这种概念一般使用比较少,因为很少有人去复制已经存在的对象。
Object类本身就支持对象克隆方法,可以发现:
protected Object clone() throws
CloneNotSuppportedException;但是要想实现克隆,那么并不是所有类的对象都可以随便克隆,需要被克隆的对象所在类一定要实现Cloneable接口。
而最关键的是该接口并没有任何的抽象方法,所以该接口只是一个标识接口,表示一种能力。
二:范例:对象克隆实现
package cn.mldn.demo;
class Person implements Cloneable { // 必须实现此接口
private String name ;
private int age ;
public Person( String name,int age) {
super();
this.name = name;
this.age = age;
}
public void setName( String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [ name=" + name + ", age=" + age + "]";
}
}
public Object clone() throws CloneNotSupportedException {
return super.clone(); //父类负责克隆
}
public class TestDemo {
public static void main(String[] args) throws Exception {
Person perA = new Person("张三",10) ;
Person perB = (Person) perA.clone() ;
perB.setAge(20);
System.out.println(perA);
System.out.println(perB);
}
}
结果:
Person [name=张三, age=10]
Person [name=张三, age=20]
对象克隆的操作本身意义不大,关键是要清楚标识接口的作用。表示的是一个能力,并不是在规定操作时的方法,这个在Java中是随处可见的。