作為最廣泛使用的程式語言之一,Java 具有廣泛的特性和功能。 Java 中的物件用於完成任務;你建立物件、改變、移動、呼叫它們各自的方法等等。眾所周知,對物件的引用儲存在Java中。因此,當我們有兩個引用指向同一個物件時,任何一個物件的變更都會完全反映在另一個物件的相同變更中。現在,這個因素可能並不總是對我們有利,因此克隆是阻止這種情況的答案。換句話說,創建此類物件的精確副本在 Java 中稱為物件克隆。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
根據定義,物件克隆是建立具有相似狀態的原始物件的精確副本的過程。克隆時,所有屬性都會轉移到新克隆的對象,但可以根據需要更改或操作這些屬性。必須在 Object 類別中定義 clone() 方法。對於我們打算克隆物件的類別來說,必須實作 java.lang.A Cloneable 介面。如果未能實現 Cloneable 接口,則會拋出異常。現在讓我們來看看物件克隆的語法。
文法:
protected Object clone() throws CloneNotSupportedException
對於Object類,具體的克隆操作是透過clone方法來進行的。此方法將建立該類別的精確副本,並使用物件欄位的內容初始化所有欄位。如果所提到的物件的類別沒有實作Cloneable接口,則會拋出「CloneNotSupportedException」。所有數組都被認為實作了 Cloneable 介面。這裡,介面 Cloneable 沒有在類別 Object 上實作。因此,當我們在物件上呼叫克隆方法時,它會拋出運行時錯誤。
現在讓我們透過示範來了解clone()方法的工作原理。
代碼:
class obj_clone implements Cloneable{ int phone_code; String f_name; obj_clone(int phone_code,String f_name){ this.phone_code=phone_code; this.f_name=f_name; } public Object clone()throws CloneNotSupportedException{ return super.clone(); } public static void main(String args[]){ try{ obj_clone s1=new obj_clone(99,"sulaksh"); obj_clone s2=(obj_clone)s1.clone(); System.out.println(s1.phone_code+" "+s1.f_name); System.out.println(s2.phone_code+" "+s2.f_name); }catch(CloneNotSupportedException c){} } }
程式碼說明:如您所見,我們初始化了我們的類別並實現了可複製。在這裡,檢查實際的類別是否實作了可克隆,並在物件中使用clone(),然後繼續建立副本。然後我們有兩個變數:電話號碼(整數資料型別)和名字(字串資料型別)。然後我們創建了 obj_clone 類別的建構子以及帶有 .this 關鍵字的變數。正如您所看到的,我們的物件帶有clone()方法和我們之前討論過的異常CloneNotSupportedException。此外,這裡的 super.clone() 可能會拋出 CloneNotSupportedException 錯誤,我們稍後捕獲了該錯誤。
然後我們有了主類,並且我們對其中的所有內容都使用了 try-catch。然後我們創建了我們類別的一個物件作為 s1 和 s2。我們已經傳遞了第一個物件 s1 的兩個參數,然後我們實作了clone() 方法來將 s1 克隆到 s2 中。最後,我們有兩個輸出列印語句。在 try 區塊之外,我們有帶有前面討論的異常的 catch 區塊。在範例的第 8th 行,我們已經實作了語法部分中提到和解釋的clone()。執行後,上述程式將列印輸出「99sulaksh 99sulaksh」。有關輸出,請參閱下面所附的螢幕截圖。
輸出:
現在我們已經了解了什麼是物件克隆以及它是如何完成的,讓我們了解 Java 支援哪些克隆類型。
現在,讓我們來了解物件克隆的優點和缺點。
了解一切或每種方法都有其自身的限制和功能,以下是克隆的優點。
就像前面提到的,每種方法都有其限制和功能,現在讓我們了解 Clone() 的缺點。
正確理解clone()或任何其他方法的優點和缺點,實現如此精彩的方法和函數可以讓程式設計師受益匪淺。
我們了解了clone()是什麼、它的功能和用途。深克隆和淺克隆之間的區別以及惰性克隆。淺克隆僅複製字段,而深克隆複製字段和值,可以根據需要實施。而惰性複製則是兩者的結合。我們也了解了克隆的優點和缺點()。
以上是Java 中的物件克隆的詳細內容。更多資訊請關注PHP中文網其他相關文章!