Некорректные строки

  • 3
  • Недоступна
Есть интерфейс Button, полный некорректных строк. Вы, наверное, уже догадались, что вам нужно их удалить оттуда, и при этом не выйти за рамки установленных требований. Желаем удачи на этом поприще!
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (57)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
O-len-ka16 уровень, Екатеринбург
3 June, 14:21
Решила с пятой попытки, по моему это первая задача где я использовала более 3 попыток!!!
Alukard19 уровень, London
24 May, 10:16
Хм, не глянул требования удалил 4. В интерфейсе Button должно остаться объявление константы NAME. В выводе получилось два SimpleObject Валидатор схавал, почему?
titix16 уровень
1 May, 00:33
Не задача, а подстава. Может уже пора нормальные требования писать? Комментаторам которые напишут: "Заказчик тоже не будет все подробно/понятно описывать" Ступайте лесом. Я не на работу устраиваюсь, а обучаюсь. Я хочу понимать почему и что я делаю,а не отгадывать как ублажить этот валлидатор.
Александр Филимонов16 уровень, Екатеринбург
5 May, 08:14
Тут описано ровно то, что нужно сделать, только немного криво. Перефразирую условие, надеюсь станет чуть понятнее: Есть 2 интерфейса, один наследует другой, все что нужно уже в них написано, но в интерфейсе Button есть ненужные строки. Удалите все ненужные чтобы остался один (подсказка: переопределенный) метод и одно поле. Вот и все, удаляем все private и protected методы, ибо в интерфейсах они должны быть public. затем удаляем "void onPress();" - они нам не нужны, ибо это те же самые методы которые написаны в интерфейсе родителе. Останется один нужный нам метод. Задача решена.
titix16 уровень
5 May, 19:42
я уже решил, но спасибо) проблема как раз в том была, что не было очевидно какой метод оставить. про переопределенный ничего не сказано, да)
Александр Кислов18 уровень, Санкт-Петербург
6 June, 19:57
В данной случае нет переопределения метода. Хотя бы даже потому, что оба метода абстрактные, у них нет реализации, нам нечего переопределять. Плюс к этому при переопределении сигнатура метода (т.е. его имя и параметры) должна оставаться точно такой же. В данной же задаче имена методов одинаковые, но один метод без параметров, а второй с одним параметром, т.е. имеем дело с перегрузкой метода.
Андрей15 уровень, Москва
22 April, 11:45
Не понимаю, авторы задачи поставили себе цель поиздеваться над нами? Было же сказано, что в интерфейсах только методы и никаких полей. Нет, как нарочно поставили строковое поле NAME. И сразу присвоили ему значение "SimpleObject". Выясняется, что поля можно определять, но только с пометкой static final , что тождественно железобетонной окончательности. И на тебе, при первом наследовании интерфейса это поле было переопределено в другое имя "Submit". Спрашивается, а что тогда означает Final?
Yuriy Kulinich19 уровень, Киев
27 April, 10:41
Тоже не ронял прикола с final
Александр Филимонов16 уровень, Екатеринбург
5 May, 07:54
Первое - поля в интерфейсах можно вводить, и даже инициализировать, но, как и говорилось, в интерфейсах только public static final поля, и только public методы, а следовательно разработчики Джавы сократили написание этих слов. В интерфейсе нельзя писать реализацию методов. Не путайте с полями, у них не реализация а инициализация. Второе - вы можете не переопределять поля, тогда вы сможете обратиться к ним через ИмяИнтерфейса.поле, вы можете переопределить как обычное поле с таким именем, и сможете изменять, вы так же можете переопределить её как константу, но в данном случае как раз и придется писать слово final. А интерфейсу это не нужно, он любые описанные поля воспримет как final.
Alexander Kolesnik16 уровень, Москва
24 May, 00:42
в интерфейсе можно писать реализацию методов начиная с 8 версии java. default
Максим Алексеенко16 уровень, Ростов-на-Дону
6 April, 09:22
Не могу понять почему метод onPress должен принимать параметр типа object, родитель же не требует этого?
Иван14 уровень
17 April, 18:29
тоже не понял откуда я должен был взять что мне нужно перегрузить метод onPress() с другим параметром (Object), да еще и сдругим типом (String). Я подумал надо переопределить тот метод что уже есть в родителе void onPress(); Щтранно..
Константин19 уровень, Варшава
23 April, 11:42
так там не было больше корректной строки, был не перегруженный метод, точно такой как в родителе, паблик и так неявно используется, прайват и протектед нельзя, а то что обджект принимает, так тут мне кажется вообще без разницы какой параметр, просто без параметра этот метод уже определён и ничего не возвращает
Terios41 уровень
3 December 2019, 08:46
не понял почему в интерфейсе допускается *состояние* String NAME ="SimpleObject", хотя ранее в уроках училось, что ни в коем случае нельзя в интерфейс добавлять поля.
Евгений Черный20 уровень, Гомель
13 December 2019, 16:33
В лекциях описывали единственный возможный вариант "public static final". В задаче переменная "final", по умолчанию в интерфейсе как я понимаю еще и "public". А вот насчет того почему не прописали что она статическая я сам не понимаю.
Юрий16 уровень, Кишинёв
28 February, 11:03
При объявлении переменной в интерфейсе, она по умолчанию уже public static final, в нашем примере при добавлении public static или удалении final ничего не изменится. public static final String NAME = "SimpleObject"; эквивалентно: String NAME = "SimpleObject";
Владимир Созанский24 уровень, Одесса
13 July 2019, 21:53
нет никакой связи между задачей и рещением
Алексей Захарченко19 уровень, Иркутск
13 November 2019, 01:25
согласен, онпрес не вызывается и не содержит реализации, значит сойдет любой, оставил 1й, всё работает, валидатор не принимает, условию соответствует, в общем выбирайте из нижних 3х, чтобы не тратить попытки
Константин22 уровень, Москва
30 May 2019, 20:48
Валидатор тоже сразу принял. Удалил всё кроме String onPress(Object o); // создали public final static объект типа String (это можно в интерфейсе) Удалял по принципу: - все методы onPress() - поскольку они наследуются из SimpleObject, зачем их опять объявлять - поле NAME - поскольку оно уже по умолчанию final и ему присваивать новое значение нельзя - поля private и protected - поскольку в интерфейсах только public Вроде всё логично, что не так поправьте.
Kirill Kushnaryov40 уровень, Barnaul
18 July 2019, 07:04
В каждом интерфейсе своя переменная NAME. хз почему
максим31 уровень, Екатеринбург
7 February, 04:57
private тоже есть начиная с java 9, но по факту в примере меняют модификатор доступа,
Yerzhan27 уровень, Актау
25 April 2019, 04:06
Валидатор принял с первой попытки, потом стал внимательно смотреть на программу, я оставил два метода public void onPress() и String onPress(Object o), но в родительском интерфейсе уже есть метод void onPress(). Не понял почему валидатор принял, я думаю, что метод void onPress() в интерфейсе Button не должен быть. Мы же в интерфейсах не перегружаем методы или я что то пропустил или не то понял. Кто может подскажет?
Artem Yaremchuk34 уровень, Омск
28 April 2019, 11:21
корректно было бы его убрать, но компилятор пропускает, потому что думает, что это переопределение метода (хотя по факту его нет). Ну а валидатор много чего не учитывает)))
Yerzhan27 уровень, Актау
29 April 2019, 06:38
спасибо Артем
максим31 уровень, Екатеринбург
7 February, 05:04
тогда не понятно почему должен остаться String onPress(Object o), так это не переопределение, а перегрузка?
Иван14 уровень
17 April, 18:30
Я тоже подумал что нужно переопределить уже существующий метод, а тут оказывается нужно перегрузить с другим типом, и еще с параметрами о_О
Торник22 уровень, Москва
16 February 2019, 17:57
Нужно отредактировать условие.Понятно,что в батон в итоге другой метод,так как появляется параметр,но изначально об этом я знать не мог,да и никто!
Lena 18 уровень
11 March 2019, 18:45
ага! Только когда валидатор подсказывает, где искать ошибку