1243. Расскажите про клонирование объектов.
Клонирование объектов в Java происходит с помощью метода Object.clone(). Этот метод создаёт и возвращает копию объекта. Класс объекта, который мы хотим клонировать, должен реализовать интерфейс Cloneable и переопределить метод clone().
Но есть некоторые особенности процесса клонирования в Java:
- Метод clone() не является public, поэтому его нельзя вызвать из другого класса. Для клонирования объекта, необходимо создать публичный метод, вызывающий метод clone() для соответствующего объекта.
- Если класс объекта не реализует интерфейс Cloneable, то его клонирование приведёт к исключению CloneNotSupportedException.
- Клонирование объектов в Java происходит по значению, а не по ссылке, поэтому изменения в клонированном объекте не повлияют на исходный объект.
Например, если у нас есть класс Person, то мы можем клонировать его так:
public class Person implements Cloneable {
private String name;
private int age;
// конструкторы, геттеры и сеттеры
public Person clone() throws CloneNotSupportedException {
return (Person) super.clone();
}
}
И затем создаем новый объект примерно так:
Person person1 = new Person("John", 35);
Person person2 = person1.clone();
Person person2 — это клон объекта person1, который сохраняет его состояние в момент клонирования. Python также имеет подобный механизм клонирования.