主要介绍Java中的浅拷贝和深拷贝概念以及实例演示
浅拷贝
浅拷贝又叫浅克隆,克隆主要是针对对象来说的,即在原有的对象基础之上再克隆出一份同样的对象。
- 1.实现
Cloneable
接口 - 2.重写
Object
类的clone
方法
例
1 | public class Student implements Cloneable{ |
深拷贝
深拷贝又叫深克隆,深拷贝和浅拷贝一样都是在已生成的对象基础之上克隆(拷贝)一份新对象。拷贝的目的是使原对象
和拷贝之后的对象互补影响,即原对象发生变化时,不会影响到拷贝之后的对象。假如对象里面的属性都是基本类型,
浅拷贝即可完成此功能,但是如果对象属性是另外一个对象时,或者属性的类里面又包含其他对象时,浅拷贝不能完成
此功能,此时需要深拷贝。
- 基于序列化反序列化的方式实现深拷贝
- 1.需要拷贝的对象要实现
Serializable
接口,不需要实现Cloneable
接口,不需要重写Object
类的clone
方法. - 2.要拷贝的对象的属性是对象的时候,此属性对象也需要实现
Serializable
接口,以此类推.
1 | //此类为要克隆对象的属性类,故要实现Serializable接口 |