JAVA里的clone分为:
1.深拷贝(深度复制):深拷贝要把复制的对象所引用的对象都复制了一遍。
2.浅拷贝(浅度复制):浅拷贝仅仅复制所考虑的对象,而不复制他所引用的对象。
Java中对象的克隆,为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。必须要遵循下面三点
1.在派生类中覆盖基类的clone()方法,并声明为public(Object类中的clone()方法为protected的)。
2.在派生类的clone()方法中,调用super.clone()。
3.在派生类中实现Cloneable接口。
Object类里的clone方法是浅复制(浅克隆)
1.浅拷贝
基类:
派生类1:
派生类2:
我们来做一下测试,试图利用克隆的对象来修改被克隆的对象中所引用的对象:
这里是输出:
可见被克隆的对象和克隆的对象共享了这个boss对象。
2.深拷贝
基类同上;
boss类同上;
新的UIDesigner类:
我们同样来做一个测试,测试的目的同上:
我们来看一下输出:
由输出我们可以看到,被克隆的对象和克隆的对象不再共享同一个boss对象。
如有问题,欢迎大家指出