Метод clone() в Java объявлен как protected, потому что было решено, что это должен быть метод, доступный только для классов и их подклассов. Более того, для реализации клонирования необходимо реализовать интерфейс Cloneable. Этот интерфейс не имеет методов. Он нужен, чтобы указать, что класс поддерживает клонирование. Если класс не имплементирует Cloneable, то при попытке клонировать объект этого класса будет выброшено исключение CloneNotSupportedException.
Чтобы реализовать клонирование в своем классе, необходимо переопределить метод clone() и вернуть клонированный экземпляр класса, используя метод super.clone(). Затем этот метод должен быть вызван из подкласса в соответствии со своей реализацией клонирования.
Пример реализации клонирования в классе MyClass может выглядеть так:
public class MyClass implements Cloneable {
private int value;
public MyClass(int value) {
this.value = value;
}
public int getValue() {
return value;
}
@Override protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Этот код объявляет класс MyClass как Cloneable , переопределяет метод clone() и вызывает super.clone(). Затем, чтобы склонировать экземпляр, можно сделать следующее:
MyClass obj1 = new MyClass(10);
MyClass obj2 = (MyClass) obj1.clone();
Теперь obj2 является клоном obj1.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov