拷贝:拷贝a对象创建一个新对象b,b的初始状态与a相同,但之后各自会有各自的状态。
拷贝规则:
浅拷贝:拷贝引用。
深拷贝:拷贝引用与实例,并递归地拷贝实例中的实例。
默认的拷贝是浅拷贝,对于对象中的子对象共享引用,如果子对象是不可变的,那么共享是安全的,但子对象大多都是可变的,必须重写clone方法建立深拷贝来克隆子对象。如果要用到clone()方法,需要实现Cloneable接口。clone()方法是Object的一个protected方法。
Cloneable接口:Cloneable接口没有指定任何方法,clone()方法是从Object继承的,它是一个标记接口,如果使用克隆而没有实现接口,则会抛出一个ClassNotSupportedException。
(标记接口不包含任何方法,唯一的作用就是允许在类型查询中使用instanceof)