clone接口提供了一个安全的clone方法。
如果不使用克隆:
为一个包含对象引用的变量建立副本,原变量和副本都是同一个对象的引用,任何一个变量改变都会影响另一个变量。
如果copy一个新对象,初始状态与original相同,但是他们是不同对象的引用,使用clone方法。
Object类实现拷贝的过程:(浅拷贝)
逐个字段进行拷贝,如果对象中字段是引用类型,拷贝字段就会得到相同子对象的另一个引用,这样一来,原对象和克隆的对象仍然会共享一些信息。
解决:重新定义clone方法来建立一个深拷贝(deep copy)
方法:实现cloneable接口,重新定义clone方法,并指定public访问修饰符