2011年5月5日

深複製與淺複製

淺複製
這個大家應該都知道了

深複製
x.clone() != x
x.clone().getClass() == x.getClass()
若定意恰當
x.clone().equals(x) is true

對象複製,當我們想要對某個類別進行複製的時候,我們因該調用該類的clone()方法,因clone()Object類中定義為protected所以我們必須對clone()override動作,所以第二步我們必須重寫對象clone()方法,那我們要如何自己實現類別複製方法?很簡單,只要調用super.clone()來處理(淺複製)原本對象複製在來加上自己要處理的程序,最後要提醒的,我們在對對象使用複製的時候,此對象必須實現Cloneable接口,Cloneable界面與Serializable接口一樣是一個mark Interface接口,並不提供任何的方法。



Object中的clone()
Student2clone()後,Teacher成員會依然的指向Student1Teacher

沒有留言:

ShareThis