Rumah  >  Artikel  >  Java  >  Pengklonan Objek di Jawa

Pengklonan Objek di Jawa

WBOY
WBOYasal
2024-08-30 16:04:50754semak imbas

Menjadi salah satu bahasa pengaturcaraan yang paling banyak digunakan, Java dilengkapi dengan pelbagai ciri dan fungsi. Objek dalam Java digunakan untuk menyelesaikan tugas; anda mencipta objek, mengubah, memindahkan, memanggil kaedah masing-masing, dsb. Seperti yang kita sedia maklum, rujukan kepada objek disimpan dalam Java. Jadi, apabila kita mempunyai dua rujukan yang menunjuk pada objek yang sama, perubahan dalam sesiapa sahaja akan dapat dilihat sepenuhnya dalam perubahan yang sama pada yang lain. Sekarang, faktor ini mungkin tidak memihak kepada kita setiap kali, jadi pengklonan adalah jawapan untuk menghalang situasi sedemikian. Dalam erti kata lain, untuk mencipta replika tepat objek sedemikian dikenali sebagai Pengklonan Objek di Jawa.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Menurut definisi, Pengklonan Objek ialah proses mencipta salinan tepat objek asal dengan keadaan yang serupa. Semasa pengklonan, semua sifat dibawa ke hadapan ke objek yang baru diklon, tetapi sifat ini boleh diubah atau dimanipulasi mengikut keperluan. Kaedah klon() perlu ditakrifkan dalam kelas Objek. Pelaksanaan java.lang.Antara muka yang boleh diklon adalah wajib untuk kelas yang kami ingin mengklon objek. Sekiranya gagal melaksanakan antara muka Boleh Diklon, pengecualian akan dibuang. Sekarang mari kita lihat sintaks untuk Pengklonan Objek.

Sintaks:

protected Object clone() throws CloneNotSupportedException

Untuk Objek kelas, operasi pengklonan khusus dilakukan dengan kaedah klon. Kaedah ini akan mencipta pendua tepat kelas dan memulakan semua medan dengan kandungan medan objek. Jika antara muka Cloneable tidak dilaksanakan oleh kelas objek yang disebutkan, ia akan membuang "CloneNotSupportedException". Semua tatasusunan dianggap melaksanakan antara muka Boleh Diklon. Di sini, antara muka Cloneable tidak dilaksanakan pada Objek kelas. Oleh itu, apabila kita memanggil kaedah klon pada objek, ia menimbulkan ralat masa larian.

Kerja Pengklonan Objek di Jawa

Mari kita fahami cara kerja kaedah klon() melalui tunjuk cara.

Kod:

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){}
}
}

Penjelasan Kod: Seperti yang anda lihat, kami memulakan kelas kami dan melaksanakan boleh diklon. Di sini, ia diperiksa jika kelas sebenar melaksanakan klon, dengan klon() dalam objek dan kemudian ia meneruskan dengan mencipta salinan. Kemudian kami mempunyai dua nombor telefon pembolehubah kami dengan jenis data integer dan nama pertama dengan jenis data rentetan. Kami kemudian mencipta pembina obj_clone kelas kami bersama-sama dengan pembolehubah dengan kata kunci .ini. Seperti yang anda lihat, kami mempunyai objek kami dengan kaedah clone() dan pengecualian CloneNotSupportedException, yang kami bincangkan sebelum ini. Selain itu, super.clone() di sini mungkin akan membuang ralat CloneNotSupportedException, yang telah kami tangkap kemudian.

Kemudian kami mempunyai kelas utama kami, dan kami telah menggunakan tangkapan cuba untuk semua yang ada di dalamnya. Kami kemudian mencipta objek kelas kami sebagai s1 dan s2. Kami telah melepasi kedua-dua parameter untuk s1, objek pertama kami, dan kemudian kami telah melaksanakan kaedah klon() untuk mengklon s1 ke s2. Akhir sekali, kami mempunyai dua kenyataan cetakan keluaran. Daripada blok percubaan, kami mempunyai blok tangkapan kami dengan pengecualian yang dibincangkan sebelum ini. Pada baris 8th contoh, kami telah melaksanakan klon() seperti yang disebutkan dan dijelaskan dalam bahagian sintaks. Selepas pelaksanaan, program di atas akan mencetak output sebagai "99sulaksh 99sulaksh". Untuk output rujuk tangkapan skrin yang dilampirkan di bawah.

Output:

Pengklonan Objek di Jawa

Jenis Pengklonan Objek dalam Java

Sekarang kita telah memahami apa itu pengklonan objek dan bagaimana ia dilakukan, mari kita fahami jenis pengklonan yang mana Java menyokong.

  • Pengklonan Cetek: Setiap kali kaedah pengklonan lalai dilaksanakan, pengklonan cetek berlaku. Pengklonan Cetek hanya menyalin semua medan objek ke dalam contoh baharu. Pengklonan cetek disokong oleh klon().
  • Pengklonan Dalam: Kini, setiap kali kami tidak melaksanakan kaedah pengklonan lalai, kami sedang menjalankan Pengklonan Dalam. Pengklonan Dalam berfungsi mengikut keperluan kita. Kini, perbezaan utama di sini ialah Pengklonan Dalam menyalin semua medan bersama-sama dengan nilai objek, manakala Pengklonan Cetek hanya menyalin medan.
  • Pengklonan Lazy: Terdapat jenis pengklonan ketiga yang disokong di Jawa, iaitu gabungan dua jenis pengklonan yang disebutkan di atas; ia dikenali sebagai Lazy Cloning. Dan tiada peraturan khusus tentang masa untuk menggunakan jenis pengklonan yang mana; terpulang kepada kita untuk membuat keputusan mengikut keperluan kita.

Kebaikan dan Kelemahan Pengklonan Objek

Sekarang, mari kita fahami kebaikan dan keburukan Pengklonan Objek.

Kelebihan

Memahami bahawa segala sesuatu atau setiap kaedah mempunyai batasan dan fungsi tersendiri, di bawah adalah kelebihan Pengklonan.

  • Ia menjimatkan masa dan kerja kerana pengklonan adalah kaedah penjimatan masa; anda tidak perlu menulis kod panjang yang sama.
  • Apabila melaksanakan projek yang telah dibangunkan, Pengklonan ialah kaedah yang paling berkesan untuk menyalin objek.
  • Ia mempunyai kaedah terpantas untuk mengawal tatasusunan dengan Clone().

Keburukan

Seperti yang dinyatakan sebelum ini, setiap kaedah mempunyai had dan fungsinya, kini mari kita fahami Kelemahan dengan Klon().

  • Untuk JVM memahami bahawa kami akan menggunakan klon(), kami perlu melaksanakan antara muka Boleh Diklon, walaupun antara muka boleh diklon ini tidak mempunyai sebarang kaedah.
  • Dalam kes pengklonan dalam, kita perlu mengatasi object.clone(), kerana ia pada asasnya menyokong pengklonan cetek.
  • Kami tidak mempunyai kawalan ke atas pembinaan objek, kerana klon() tidak menggunakan mana-mana pembina.
  • Pada asasnya, untuk melaksanakan object.clone(), kita perlu membuat beberapa perubahan dalam kod kita, bermula dengan pelaksanaan antara muka Boleh Diklon, kemudian definisi kaedah klon() untuk mengendalikan CloneNotSupportedException, dsb.

Dengan pemahaman yang betul tentang kelebihan dan kekurangan clone() atau mana-mana kaedah lain, pelaksanaan kaedah dan fungsi yang hebat itu boleh memberi manfaat besar kepada pengaturcara.

Kesimpulan

Kami faham apa itu clone(), fungsinya dan kegunaannya. Perbezaan antara pengklonan dalam dan cetek, bersama-sama dengan pengklonan malas. Pengklonan cetek hanya menyalin medan manakala Pengklonan Dalam menyalin medan dan nilai dan boleh dilaksanakan mengikut keperluan. Manakala Lazy Copy adalah gabungan kedua-duanya. Kami juga memahami kelebihan dan kekurangan klon ().

Atas ialah kandungan terperinci Pengklonan Objek di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Antara Muka Koleksi di JawaArtikel seterusnya:Antara Muka Koleksi di Jawa