28. Nhân bản đối tượng trong lập trình java hướng đối tượng

Để nhân bản (clone) đối tượng trong lập trình Java hướng đối tượng, bạn có thể sử dụng giao diện Cloneable và phương thức clone(). Tuy nhiên, cần lưu ý rằng việc nhân bản đối tượng bằng cách sử dụng clone() là một quá trình nhân bản nông (shallow cloning), nghĩa là chỉ các tham chiếu đến các đối tượng được sao chép, không phải các đối tượng thực sự. Để thực hiện nhân bản sâu (deep cloning), bạn phải triển khai quá trình nhân bản thủ công.

Dưới đây là một ví dụ về cách nhân bản đối tượng trong Java:

java
public class Person implements Cloneable {
    private String name;
    private int age;

    // Constructors, getters, setters, etc.

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

Trong ví dụ trên, lớp Person triển khai giao diện Cloneable để chỉ định rằng nó hỗ trợ việc nhân bản. Phương thức clone() được ghi đè từ lớp Object và trả về một bản sao (clone) của đối tượng hiện tại.

Để nhân bản một đối tượng Person, bạn có thể gọi phương thức clone() trên đối tượng đó:

java
Person person1 = new Person("John", 25);
try {
    Person person2 = (Person) person1.clone();
    // person2 là bản sao của person1
} catch (CloneNotSupportedException e) {
    e.printStackTrace();
}

Trong ví dụ trên, chúng ta sử dụng khối try-catch để xử lý ngoại lệ CloneNotSupportedException có thể xảy ra khi một lớp không hỗ trợ nhân bản.

Lưu ý rằng với quá trình nhân bản nông, các tham chiếu đến các đối tượng trong đối tượng gốc và bản sao đều trỏ đến cùng một đối tượng, do đó thay đổi trong một đối tượng có thể ảnh hưởng đến đối tượng khác. Nếu bạn cần nhân bản sâu, bạn phải triển khai một quá trình nhân bản thủ công để sao chép tất cả các thành phần bên trong đối tượng.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top