浅谈java深拷贝和浅拷贝

来源:互联网 发布:python中的iteritems 编辑:程序博客网 时间:2024/04/28 01:52

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对象。


如有问题,欢迎大家指出

0 0
原创粉丝点击