задача решена, поэтому код не прикрепляю. вопрос вот в чем, возможно ли сделать вот как: класс test3 implements Cloneable; а класс test4 extends test3 и в test4 переопределяется метод clone ? валидатор писал что это ошибка и test4 должен имплементировать интерфейс, и такой вопрос уже был в обсуждении этой задачи, но там ответа на это нет. В общем, вопрос почему это не сработало? ведь по наследству должен имплементить. или здесь чисто проверка валидаторатск работает. сразу скажу, видел что в тест3 метод c1one и он и вызывается в мэйн. меня интересовало, сработает это или нет
Eugene Volkov
35 уровень
что насчёт реализации интерфейса.
Обсуждается
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
23 декабря 2025, 11:10
Хрен знает о чём ты. Прикрепи код, сформулируй внятно вопрос. Что пробовал ты, что требует задача, что не заработало или наоборот заработало и тебя удивило.
0
Eugene Volkov
23 декабря 2025, 18:56
Исправь ошибки: перемести методы clone в те классы, в которых они должны быть реализованы.
Лишние методы удали.
Не удаляй метод main.
изначально
0
Eugene Volkov
23 декабря 2025, 19:07
то что сработало
0
Eugene Volkov
23 декабря 2025, 19:08
из-за того что test4 наследуется от test3 ради интереса попытался в тест3 имплементировать Cloneable, а в тест4 переопределить метод clone(). Но валидатор ругнулся и не принял, указав в ошибке конктетно что именно тест4 должен имплементировать Cloneable. Вопрос скорее из любопытства, возможно ли так.
0
Денис Enterprise Java Developer
23 декабря 2025, 20:20
Ну смотри, довольно сумбурно, но из того что я вижу в основе, имплементить Cloneable был смысл в Test1. В Test2 у метода который написан сигнатура другая, т.е. это не override, а нужный метод он берёт из родителя.
В случае с c1one это вообще хрень и никакого отношения к интерфейсу не имеет.
Я бы делал так.
Штука в том, что интерфейсы в наследниках тоже доступны, то что имплементировано в родителе можно вызвать из дочернего класса. А классы Test3 и 4 вообще имеют какой-то свой метод и мне ничего не говорит о том, что там нужно имплементить Cloneable. А учитывая что валидный по сигнатуре метод есть только у Test1 то он его и должен имплементить.
P.S. Да, я не посмотрел на main(). Очевидно что в Test4 нужно имплементить Cloneable тоже, ведь он вызывается в main, а раз метод удалять нельзя, то надо сделать когд компилируемым.
Можно ли было имплементить Cloneable в Test3 чтобы код компилился и работал? Можно, но тут возникает уже логический вопрос - что ты хочешь из него возвращать, Object или Test3. Будет немного странно если test4.clone() вернёт Test3 например.
А проблема валидатора скорее в том что он проверяет угадаешь ли ты где именно нужно было проставить интерфейсы маркеры или нет. В данном случае Test1 и Test4. К работе механизма это не вполне имеет отношение.
+1
Eugene Volkov
23 декабря 2025, 21:11
сенькью. доходчиво
0