对象克隆
对象克隆指的就是将一个对象进行内容的复制,如果要想实现克隆操作,可以使用Object类之中定义的一个方法。
如果要想正常地实现克隆操作,那么对象所在的类必须实现Cloneable接口,但是这个接口里面并没有定义任何的方法,此接口属于标识接口,指的是一种能力的体现。
protected Object clone() throws CloneNotSupportedException;
class Book implements Cloneable {
private String title;
private double price;
public Book(String title, double price) {
this.title = title;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
protected Object clone() throws CloneNotSupportedException
{
return super.clone();
}
@Override
public String toString() {
return "Book[title = " + title + ", price = " + price + "]";
}
}
public class ObjectClone {
public static void main(String[] args) throws Exception {
Book bookA = new Book("Java编程思想", 108.0);
Book bookB = (Book)bookA.clone(); // 克隆对象
bookB.setPrice(100.8);
System.out.println(bookA);
System.out.println(bookB);
}
}
【结果】
对象的克隆其实际上就是新建一个内存空间将原有对象中的信息复制过来,如下图所示: