一、定义:
把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制
二、细节:
方法在底层会帮我们创建一个对象,并把原对象中的数据拷贝过去。
书写细节:
- 重写object中的clone方法
- 让javabean类实现cloneable接口
- 创建原对象并调用clone就可以了。
三、分类
1、浅拷贝
定义:不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来
2、深拷贝
定义:基本数据类型拷贝过来;字符串复用;引用数据类型会重新创建新的
四、实现深拷贝
默认使用浅拷贝,想要使用深拷贝,需要重写clone方法或使用第三方工具类gson-2.6.2.jar
@Override
protected Object clone() throws CloneNotSupportedException {
//调用父类中的clone方法
//相当于让Java帮我们克隆一个对象,并把克隆之后的对象返回出去。
//先把被克降对象中的数组获取出来
int[] data = this.data;
//创建新的数组
int[] newData = new int[data.length];
//拷贝数组中的数据
for (int i = 0; i < data.length; i++) {
newData[i] = data[i];
}
//调用父类中的方法克降对象
User u = (User) super.clone();
//因为父类中的克隆方法是浅克隆,替换克隆出来对象中的数组地址值
u.data = newData;
return u;