Решила задачу, но так и не поняла, для чего метод onPress и где он испрользуется( наведите пжл на мысль
Валерия
27 уровень
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
25 ноября 2024, 18:53
Жаль на код посмотреть скорее всего не получится, но чисто логически, исходя из описания задачи у тебя есть интерфейс Button, стало быть кнопка. Подозреваю, что кнопку можно нажать, для того ведь кнопки и созданы, чтобы их нажимали... а раз кнопку можно нажать, то должен быть какой-то метод обработчик этого самого нажатия. Название onPress() недвусмысленно намекает что это тот самый метод и есть.... ну точнее будет в том классе который реализует интерфейс Button.
0
ВалерияРаботает в Bell integrator (QA)
25 ноября 2024, 19:05
большое спасибо за ответ! проблема в том, что этот метод больше нигде не используется
прикладываю код
public class Solution {
public static void main(String[] args) throws Exception {
System.out.println(SimpleObject.NAME);
System.out.println(Button.NAME);
}
interface SimpleObject {
String NAME = "SimpleObject";
}
interface Button extends SimpleObject {
final String NAME = "Submit";
public void onPress();
protected void onPress();
void onPress();
private void onPress();
protected String onPress(Object o);
String onPress(Object o);
private String onPress(Object o);
}
}
0
Денис Enterprise Java Developer
25 ноября 2024, 19:15
проблема в том, что этот метод больше нигде не используется
А по условию должен? Если нет, то почему это проблема? Пусть будет 😃
В приложенном коде всякого много, и на мой взгляд лишнего.
1. в интерфейсах все методы публичные, объявлять это отдельным словом не нужно, а еще третьим по счёту идёт такой же в точности метод, потому смело первую строку нахрен.
2. protected нельзя использовать и в интерфейсах, потому что все методы интерфейса публичные, нахрен протектед (а заодно и второй тоже)
3. В догонку за protected отправляются и private. Идея подсказывает что приватные методы в интерфейсах должны иметь тело (т.е. быть реализованы, default методы значит). Условия я не вижу, но думается мне это не наш случай.
4. В сухом остатке у нас два метода, это void onPress() и void onPress(Object o); Как про меня выглядит достаточно приемлемо, но надо уточнять у условия задачи.
А тот факт что методы нигде не вызываются и даже не реализованы не так важен, ведь задача то про другое, чтобы ты поняла что такое интерфейсы и как в них объявлять методы, а главное для чего они нужны. Интерфейс это публичный контракт, метод взаимодействия с твоими классами которые ты как программист целенаправленно выставляешь наружу. Т.е. ему не нужны ни протектед ни прайват методы, чисто по долгу службы. Если приваты прямо очень нужны их надо реализовывать сразу, ведь ты их все равно не переопределишь ни в наследниках ни в имплементациях самого интерфейса. Методы с одинаковой сигнатурой так же нельзя иметь, независимо от уровня доступа.
Вот про это думаю и задача.
+3
ВалерияРаботает в Bell integrator (QA)
25 ноября 2024, 19:34
Денис, спасибо вам огромное! У вас талант объяснять сложные вещи простым языком!
+1
Денис Enterprise Java Developer
25 ноября 2024, 20:03
Спасибо на добром слове ) на самом деле все ООП родилось из этой идеи. В сущности все эти объекты, интерфейсы и прочая мишура это отражение реального мира. Собаки гавкают потому что это логично, животные издают звуки потому что это логично. Собака это животное, и если она издаёт звук - она будет гавкать. Вот тебе самый пример наследования )
+1