Зачем использовать в качестве типа переменной интерфейс?

Ребят, выручайте!
При изучении паттернов проектирования неоднократно сталкиваюсь, когда в примерах кода в листингах в качестве некоторых типов переменных используется интерфейс (объекты- экземпляры классов, реализующие этот интерфейс.) Скажите, какие преимущества такого подхода, что это даёт, как это используется на практике? Почему нельзя в качестве типа переменной указывать просто класс, реализующий этот интерфейс?
Понимаю, что это как то расширяет возможности, но как ? вопрос скорее всего глупый, но все же.
  • Вопрос задан
  • 348 просмотров
Решения вопроса 2
Stasgar
@Stasgar
Обученная макака
Почитайте про инъекцию зависимостей.

Интерфейс дает возможность использовать все реализующие его классы без изменения кода класса, где используются подклассы этого интерфейса (звучит криво, но вчитайтесь :) )

А суть паттернов в двух словах - свести к минимуму кол-во изменений существующего кода при добавлении новой функциональности.

Еще про SOLID принципы почитайте, тоже будет полезно.
Ответ написан
Комментировать
Пример: List -> ArrayList, LinkedList

Если тебе нужна просто коллекция с методами, описанными в интерфейсе, и не важна реализация этой коллекции, то нужно использовать в качестве типа переменной интерфейс List. Это сбережет время и нервы в будущем, если придется поменять реализацию с ArrayList на LinkedList - не придется менять по всей программе ArrayList на LinkedList и можешь быть уверенным, что программа продолжит работать корректно.
Если нужны специфические методы конкретной реализации, то нужно использовать ее.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект