Nhân bản đối tượng trong Java



Nhân bản đối tượng là một cách để tạo một bản sao của một đối tượng. Để thực hiện mục đích này, bạn sử dụng phương thức clone(). Java.lang.Cloneable Interface phải được triển khai bởi lớp mà có đối tượng cần nhân bản chúng ta muốn tạo. Nếu bạn không triển khai Cloneable Interface, phương thức clone() sẽ tạo CloneNoSupportedException.

Phương thức clone() được định nghĩa trong lớp Object. Cú pháp của phương thức clone() như sau:

protected Object clone() throws CloneNotSupportedException  

Tại sao sử dụng phương thức clone() trong Java?

Phương thức clone() tiết kiệm các tiến trình xử lý phụ để tạo bản nhân bản của một đối tượng. Nếu bạn thực hiện nó bởi từ khóa new, điều này sẽ tốn nhiều tiến trình xử lý hơn, và đó là lý do tại sao chúng ta sử dụng nhân bản đối tượng.

Ví dụ

Bạn theo dõi ví dụ đơn giản sau về nhân bản đối tượng với phương thức clone() trong Java:

class Student18 implements Cloneable{  
int rollno;  
String name;  
  
Student18(int rollno,String name){  
this.rollno=rollno;  
this.name=name;  
}  
  
public Object clone()throws CloneNotSupportedException{  
return super.clone();  
}  
  
public static void main(String args[]){  
try{  
Student18 s1=new Student18(101,"hoang");  
  
Student18 s2=(Student18)s1.clone();  
  
System.out.println(s1.rollno+" "+s1.name);  
System.out.println(s2.rollno+" "+s2.name);  
  
}catch(CloneNotSupportedException c){}  
  
}  
}  

Chạy chương trình Java trên sẽ cho kết quả dạng:

Output:101 hoang
       101 hoang

Như bạn thấy trong ví dụ trên, các biến tham chiếu đều có cùng giá trị. Vì thế, phương thức clone() sao chép các giá trị của một đối tượng sang đối tượng khác. Do đó, chúng ta không cần viết code tường minh để sao chép giá trị từ đối tượng này sang đối tượng khác.

Nếu bạn tạo đối tượng khác với từ khóa new và gán giá trị của đối tượng khác cho nó, thì điều này tốn nhiều tiến trình xử lý hơn trên đối tượng này. Do đó để tiết kiệm các tiến trình xử lý phụ, chúng ta nên sử dụng phương thức clone().

Mọi người cho thể tham gia khóa học thứ 5 của vietjackteam vào 08/12/2017 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng.

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Nhân dịp tháng mua sắm cuối năm, trong tháng 12/2017, giá khóa học chỉ còn 300k, liên hệ facebook admin fb.com/tuyen.vietjack để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại Khóa học Java Online trên Udemy. Khóa học có rating 4.7/5 trên udemy từ nhận xét của các bạn học viên.

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.