Java中支持對象的複製(克隆)處理操作,可以直接利用已有的對象克隆出一個成員屬性內容完全相同的實例化對象,對象的克隆可以使用Object類中提供的clone()方法,此方法定義如下:
克隆方法:protected Object clone() throws CloneNotSupportedException;
clone()此方法上拋出了一個“CloneNotSupportedException”(不支持的克隆異常),這個異常表示的是,要克隆對象的類必須實現Cloneable接口,但是Cloneable接口沒有任何的方法,所以這個接口屬於標識接口,只表示一種能力
範例:實現對象克隆
public class Member03 implements Cloneable { //標識接口,表示一種能力,該類對象允許克隆
private String name;
private int age;
public Member03(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Member03 [name=" + name + ", age=" + age + "]";
}
@Override
protected Object clone() throws CloneNotSupportedException{
return super.clone(); //調用父類clone()方法
}
}
public class JavaAPIDemo348 {
public static void main(String[] args) throws CloneNotSupportedException {
Member03 Member03A=new Member03("雷雷",22);
Member03 Member03B=(Member03)Member03A.clone();
Member03B.setName("雪雪");
System.out.println(Member03A);
System.out.println(Member03B);
}
}
執行結果
Member03 [name=雷雷, age=22]
Member03 [name=雪雪, age=22]
對象的克隆操作可以通過Object類提供的clone()方法來完成,由於此方法在Object中使用protected設置了訪問權限,所以該方法只能通過子類調用,而對象克隆成功後就會利用已有的對象構建一個全新的對象,彼此之間的操作不會有任何影響。必須實現Cloneable接口才能克隆。這個接口屬於標識接口,表示一種能力。