Cloneable介面是Java開發中常用的一個介面, 它的作用是使一個類的實體能夠將自身拷貝到另一個新的實體中,注意,這里所說的“拷貝”拷的是物件實體,而不是類的定義,進一步說,拷貝的是一個類的實體中各欄位的值, 在開發程序中,拷貝實體是常見的一種操作,如果一個類中的欄位較多,而我們又采用在客戶端中逐欄位復制的方法進行拷貝操作的話,將不可避免的造成客戶端代碼繁雜冗長,而且也無法對類中的私有成員進行復制,而如果讓需要具備拷貝功能的類實作Cloneable介面,并重寫clone()方法,就可以通過呼叫clone()方法的方式簡潔地實作實體拷貝功能, 深拷貝(深復制)和淺拷貝(淺復制)是兩個比較通用的概念,尤其在C++語言中,若不弄懂,則會在delete的時候出問題,但是我們在這幸好用的是Java,雖然Java自動管理物件的回收,但對于深拷貝(深復制)和淺拷貝(淺復制),我們還是要給予足夠的重視,因為有時這兩個概念往往會給我們帶來不小的困惑, 淺拷貝是指拷貝物件時僅僅拷貝物件本身(包括物件中的基本變數),而不拷貝物件包含的參考指向的物件,深拷貝不僅拷貝物件本身,而且拷貝物件包含的參考指向的所有物件,舉例來說更加清楚:物件 A1 中包含對 B1 的參考, B1 中包含對 C1 的參考,淺拷貝 A1 得到 A2 , A2 中依然包含對 B1 的參考, B1 中依然包含對 C1 的參考, 深拷貝則是對淺拷貝的遞回,深拷貝 A1 得到 A2 , A2 中包含對 B2 ( B1 的 copy )的參考, B2 中包含對 C2 ( C1 的 copy )的參考, 若不對clone()方法進行改寫,則呼叫此方法得到的物件即為淺拷貝
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/147228.html
標籤:Java
上一篇:Arrays.sort 和 Collections.sort 實作原理和區別
下一篇:wait 和 sleep 的區別
