前言
克隆,即复制一个对象,该对象的属性与被复制的对象一致,如果不使用Object类中的clone方法实现克隆,可以自己new出一个对象,并对相应的属性进行数据,这样也能实现克隆的目的。
但当对象属性较多时,这样的克隆方式会比较麻烦,所以Object类中实现了clone方法,用于克隆对象。
Java中的克隆分为浅克隆与深克隆
一、实现克隆的方式
1.对象的类需要实现Cloneable
接口
2.重写Object类中的clone()
方法
3.根据重写的clone()方法得到想要的克隆结果,例如浅克隆
与深克隆
。
二、浅克隆与深克隆的区别
浅克隆:复制对象时仅仅复制对象本身,包括基本属性,但该对象的属性引用其他对象时,该引用对象不会被复制,即拷贝出来的对象与被拷贝出来的对象中的属性引用的对象是同一个。
深克隆:复制对象本身的同时,也复制对象包含的引用指向的对象,即修改被克隆对象的任何属性都不会影响到克隆出来的对象。
eg.
浅克隆
@Override
protected Person clone() throws CloneNotSupportedException {
return (Person)super.clone(); //调用父类的clone方法
}
注:clone()方法调用C++实现!!