Object的clone 方法 深拷貝 淺拷貝

2021-07-10 18:25:41 字數 589 閱讀 7359

乙個物件直接使用=,比如object o1=new object();

object o2=o1;那麼問題是o1改變,o2也會改變。

這時候,需要不隨之前的物件改變而改變,使用clone。

需要注意clone是protect的,所以子類繼承object ,否則丟擲異常

public teacher clone()  catch (clonenotsupportedexception e) 

return null;

}

就這樣複製成功,不受改變而影響。

但是原來物件一些屬性有些是可變物件,這些物件簡單的clone持引用,還是不可以。

原因在於你複製了物件的引用,這是不行的,如果物件改變,你也會改變。當然string

這種物件,他就是不變,所以他怎麼變都沒有事情,但是其他物件就不行了。

那麼記住,基本型別,string直接物件clone,其他需要在物件clone,其屬性還要繼續clone

public class teacher implements cloneable 

}

Object類中clone 方法

使用場景 當我們需要建立乙個物件的副本的時候,並且在改變他們各自的內容的時候互不影響,就可以使用object類中clone 方法 使用clone 方法需要注意 需要實現cloneable介面,否則丟擲clonenotsupportedexception 需要呼叫super.clone 該方法實現 淺...

object 物件中的clone

1.object中的clone執行的時候使用了rtti run time type identification 的機制,動態得找到目前正在呼叫clone方法的那個reference,根據它的大小申請記憶體空間,然後進行bitwise的複製,將該物件的記憶體空間完全複製到新的空間中去,從而達到sha...

Object類中clone 的使用方法

我們先看兩個圖 圖1 圖2由以上兩個圖,我們可以知道,要想使用clone 方法需要先implements cloneable介面 該介面是標記介面,也就意味著必須打上轉殖的標識你才能進行轉殖 再看圖2 object類中方法名前加protected意味著只有其子類才能訪問,其他類訪問需要子類重寫該方法...