Само решение задачи прошу не проверять и не комментировать.
Интересует только закомменитрованный метод protected ArrayDeque clone() класса C.
А именно:
1. Почему возникает конфликт методов клонирования C и ArrayDeque?
2. Почему модификатор этого метода должен быть public (или не менее открытый чем.. чем что? - это вопрос 2.1)?
Спасибо.
/**
Исправь ошибки: перемести методы clone в те классы, в которых они должны быть реализованы.
Лишние методы удали.
Не удаляй метод main.
Требования:
1. В классе C должен быть реализован метод clone без параметров.
2. В классе Solution должен существовать метод main.
3. В классе Solution должны существовать 4 вложенных класса.
4. В классе Solution должен существовать 1 метод.
5. Метод clone в классе C должен возвращать объект типа C.
*/
public class Solution {
public static class A implements Serializable {
protected A clone() throws CloneNotSupportedException {
return (A) super.clone();
}
}
public static class B implements Remote {
protected final B clone() throws CloneNotSupportedException {
return (B) super.clone();
}
}
public static class C extends ArrayDeque {
// public C clone() {
// return (C) super.clone();
// }
// /*
// Ошибки при компиляции:
// конфликт методов клонирования C и ArrayDeque;
// попытка назначения меньшего права доступа (метод должен иметь модификатор public)
// */
// protected ArrayDeque clone() throws CloneNotSupportedException {
// return super.clone();
}
}
public static class D implements EventListener {
protected D clone() throws CloneNotSupportedException {
return (D) super.clone();
}
}
protected Thread clone() throws CloneNotSupportedException {
return (Thread) super.clone();
}
public static void main(String[] args) {
}
}