天天看點

java 淺複制和深複制

原文:http://ttitfly.iteye.com/blog/155422

1.java裡的clone分為: 

a:淺複制(淺克隆): 淺複制僅僅複制所考慮的對象,而不複制它所引用的對象。 

b:深複制(深克隆):深複制把要複制的對象所引用的對象都複制了一遍。 

java中對象的克隆,為了擷取對象的一份拷貝,我們可以利用object類的clone()方法。必須要遵循下面三點 

1.在派生類中覆寫基類的clone()方法,并聲明為public【object類中的clone()方法為protected的】。 

2.在派生類的clone()方法中,調用super.clone()。 

3.在派生類中實作cloneable接口。 

object類裡的clone方法是淺複制(淺克隆) 

淺複制(淺克隆)的例子如下: 

2.深複制(深clone)例子: 

3.利用序列化來做深複制,把對象寫到流裡的過程是序列化(serilization)過程,而把對象從流中讀出來的過程則叫做反序列化(deserialization)過程。應當指出的是,寫在流裡的是對象的一個拷貝,而原對象仍然存在于jvm裡面。,利用這個特性,可以做深拷貝