java裡的clone分為:
A:淺複制(淺克隆): 淺複制僅僅複制所考慮的對象,而不複制它所引用的對象。
b: 深複制(深克隆):深複制把要複制的對象所引用的對象都複制了一遍。
Java中對象的克隆,為了擷取對象的一份拷貝,我們可以利用Object類的clone()方法。必須要遵循下面三點
1.在派生類中覆寫基類的clone()方法,并聲明為public【Object類中的clone()方法為protected的】。
2.在派生類的clone()方法中,調用super.clone()。
3.在派生類中實作Cloneable接口。
注明:Object類裡的clone方法是淺複制(淺克隆)
一般java對象
普通複制
深複制
因為Object類裡的clone方法是淺複制,是以當Book裡面包含其他對象引用Person的時候,需要在對Book重寫clone()方法的時候也調用Person的clone()方法。
List等集合的深複制
利用序列化來做深複制,把對象寫到流裡的過程是序列化(Serilization)過程,而把對象從流中讀出來的過程則叫做反序列化(Deserialization)過程。應當指出的是,寫在流裡的是對象的一個拷貝,而原對象仍然存在于JVM裡面。,利用這個特性,可以做深拷貝 。