Интерфейсная переменная

Во многих примерах кода объявляется ссылочная переменная интерфейса, которая ссылается на объект класса реализующий этот интерфейс. К примеру:

List <String> StringCollection = new ArrayList<>();

Каковы преимущества такого подхода в сравнении с присваиванию ссылочной переменной тому классу, который этот же объект и реализует? Т.е. :

ArrayList <String> StringCollection = new ArrayList<>();

Ответы (1 шт):

Автор решения: Roman C

Почему мы используем интерфейсы при объявлении переменной, потому что мы хотим абстрагироваться от конкретной реализации данного интерфейса. Методы интерфейса все чисто виртуальные и поэтому можно использовать полиморфизм. То есть кодирование с помощью интерфейсов позволяет внедрять нежесткую связь между классами. Вы можете в любой момент подменить реализацию и в вашем коде не нужно будет делать изменений.

То, что касается интерфейса List и его реализации ArrayList, то это одна из популярных коллекций, наиболее часто встречающаяся в коде. Если используется только одна реализация и в будущем никто не собирается ее менять, то можно использовать ArrayList типом переменной. Тогда вы точно будете знать класс используемой переменной.

→ Ссылка