Sobes.tech
Back to questions
Junior — Middle
66

Для чего служит метод clone() в базовом классе Object?

Answer from AI

sobes.tech AI

Метод clone() в классе Object служит для создания копии объекта. По умолчанию он выполняет поверхностное копирование (shallow copy), то есть копирует значения полей объекта, но если поля — ссылки на другие объекты, копируются только ссылки, а не сами объекты.

Чтобы использовать clone(), класс должен реализовать интерфейс Cloneable, иначе при вызове будет выброшено исключение CloneNotSupportedException.

Пример использования:

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

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

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

// Использование:
Person p1 = new Person("Иван", 30);
Person p2 = (Person) p1.clone();

Если нужно глубокое копирование (deep copy), то метод clone() нужно переопределить, чтобы копировать вложенные объекты.