Каковы реальные применения интерфейсам?

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


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

Автор решения: стасевич

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

например - есть у нас абстрактный класс студент, у него есть поля, имя, фамилия и тд. поведение(методы) спать, есть, учиться и тд.

от него наследуются класс старшекурсник и класс профессор, получая все его поля и методы, мы можем переопределить и задать нужное поведение.

наследоваться мы можем только от одного класса, а имплементировать интерфейсы сколько угодно.

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

→ Ссылка