Я хочу укрепить свое понимание концепции "кодирование для интерфейса". Насколько я понимаю, один создает интерфейсы для определения ожидаемой функциональности, а затем реализует эти "контракты" в конкретных классах. Чтобы использовать интерфейс, можно просто вызвать методы в экземпляре конкретного класса.
Очевидным преимуществом является знание функциональности, предоставляемой конкретным классом, независимо от его конкретной реализации.
Исходя из вышесказанного:
- Есть ли какие-либо заблуждения в моем понимании "кодирования для интерфейсов"?
- Есть ли какие-либо преимущества кодирования для интерфейсов, которые я пропустил?
Спасибо.