Flyable flyable = new Aircraft();Laziz Karimov
2 уровень
Зачем создавать объект и ссылать его на интерфейс?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
5 июня 2022, 09:05полезный
Суть интерфейса - описание поведения. Если твой класс имплементирует какой-либо интерфейс ты наверняка знаешь что методы интерфейса у него вызывать можно - это же удобно.
Тут в курсе есть одна задачка про очистку квартир, одно, двух и трехкомнатных. Задача решается рагульно, потому как в каждом из классов квартир свой метод "почистить однокомнатную" "двухкомнатную" и "трехкомнатную" квартиру.
А если бы у них скажем был интерфейс "Квартира" с методом "почистить", то ты бы не забивал себе голову необходимостью проверить к какому типу принадлежит конкретная квартира, что бы ее убрать, ты бы вызвал соответствующий метод интерфейса.
Ну и может быть в коде будет нагляднее.
Стоит отметить, что здесь прекрасно работает еще и принцип черного ящика. Если у тебя есть интерфейс - тебе пофиг как оно реализовано внутри, ты уже знаешь как это работает и что от него ожидать. Что птица и самолет летают - не скрет, но и самолет и птица летают по-разному, вот только для тебя, как пользователя этого интерфейса вообще нет разницы :) ты вызываешь один и тот же метод.
+1
🟡ampersand
5 июня 2022, 06:27
Список методов, которые можно будет вызвать у переменной flyable будет определен интерфейсом (типом переменной), а не классом объекта (типом объекта).
0
hidden #2602426
4 июня 2022, 12:36
Допустим у тебя есть классы воробей, соловей, ворон, пингвин - наследники класса птица. А есть самолет, поезд, автобус - наследники класса транспорт.
Мы хотим создать метод который принимает все летающие объекты и отправляет их в "добрый путь".
С помощью интерфейса мы обьединяем классы воробей, соловей, ворон, самолет и даем им общий метод fly().
Public void goFly(Flyable flyable) {
System.out.println("В добрый путь");
flyable.fly();
}
Так мы решаем проблему множественного наследования и защищаем наш метод от ложных данных .
Также создание объекта приводя его к интерфейсу делает программу гибче. По этой причине со списками и мапами работаю через интерфейсы List и Map
+2
Laziz KarimovBackend Developer в СберБанк
4 июня 2022, 21:24

0
Laziz KarimovBackend Developer в СберБанк
4 июня 2022, 21:54
Итак, что я понял! Прописывая реализацию дефолтного метода fly в интерфейсе Flyable, нам не придется каждый раз это делать с каждым объектом. Метод goFly теперь может принимать только объекты которые реализуются от интерфейса.
0