为什么要克隆对象?直接new一个不行吗?
克隆的对象可能包含已经修改过的数据,而new的对象是初始化的数据。所以,克隆主要的目的就是为了保持对象的“状态”(即此时的数据)。虽然,可以通过new对象然后按照set方法一个个设置对象数据。但是,大型项目中大对象十分常见,不可能去一个一个设置对象,此时,克隆就十分有必要了。
那么如何复制一个对象呢?
总所周知,Object是所有类的父类,它提供了一个clone方法,用于实现clone操作。我们只需要覆盖Object类的clone方法即可。
克隆的分类?
浅克隆:如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象和克隆对象的成员变量指向相同的内存地址。
深克隆:在深克隆中,无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象,深克隆将原型对象的所有引用对象也复制一份给克隆对象
具体,我们可以通过两张图来展示。
浅克隆
深克隆
下一回,我们将仔细的探究两种克隆方式的不同!
如果内容对您有帮助,希望您能多多点赞收藏加关注,激励作者创作出更加优质内容,谢谢!