为什么我们要使用克隆?
答:想对一个对象进行操作处理,又想保留原有的数据进行接下来的操作。允许在不影响原始对象的情况下创建相同的对象。通俗理解:就是我用我的复制人去干任何事我都不怕。
注意:克隆不适用于所有情况。对于某些对象来说,使用克隆可能会导致意外的行为。此外,在某些情况下,克隆可能比手动创建对象更消耗内存。因此,必须仔细考虑是否使用克隆,并评估其优缺点以及潜在的风险。
克隆分为:浅拷贝与深拷贝
浅拷贝:对A对象拷贝(有基本数据类型属性和引用数据类型属性),拷贝出来A1。对A1的基本数据类型修改并不会对A有影响,但是对A1的引用数据类型修改对A有影响。即浅拷贝的基本数据类型不会有影响,但是引用数据类型有影响
深拷贝:对A对象拷贝(有基本数据类型属性和引用数据类型属性),拷贝出来A1,A1跟A不共享内容,是一个全新的对象,修改A1不会修改A。即深拷贝的基本数据类型不会有影响,引用数据类型也不会有影响
浅拷贝:
深拷贝:要实现深拷贝,必须确保被复制的对象及其所有子对象都实现了Cloneable接口并重写了clone()方法。另外,如果被复制的对象包含类似于文件句柄、网络连接等资源,那么需要在clone()方法中进行特殊处理以避免资源泄漏等问题。