1.定义
深拷贝:相当于创建了一个新对象,只是这个对象的所有内容和被拷贝对象一模一样,同时两者之间是完成隔离的,相互之间没有影响
浅拷贝:也是创建了一个对象,但是这个对象的某些内容依然是被拷贝对象的,即通过这两个对象中任意一次修改,两个对象都会受到影响
2.实现方法
浅拷贝:实现cloneable,重写clone()方法,同时需要super.clone()
注意:
拷贝后获得的是一个独立对象,和原始对象拥有不同的内存地址
对于基本数据类型和string,两者是隔离的
对于非基本类型数据,只是拷贝了一份引用,实际指向的是同一个对象。
浅拷贝是创建了一个新的对象,然后新对象的每个值是由原始对象的值通过=号赋值
基本数据类型是值赋值,引用类型是引用赋值
深拷贝:就是创建了一个全新对象,新的对象内部所有成员也都是全新的,只是初始化的值已经由被拷贝对象确定了
深拷贝独立的对象;拷贝后对象的内容,与原始对象的内容完成没关系,都是独立的
深拷贝一般需要自己来实现,拷贝实现方式:反射和动态代理
反射:先通过反射获取对象的所有属性,然后修改可访问级别,然后赋值;再获取继承的父类属性,同样利用反射进行赋值
代理:通过get\set方法,通过中间代理