Задать вопрос
tmnkilya
@tmnkilya
Java Developer

Зачем в интерфейсах логика?

Задумался сегодня над таким вопросом. В языке программирования Java существуют такие понятия как абстрактный класс и интерфейс. Это очень похожие сущности за некоторыми исключениями.

В Java до 8 версии отличия следующие: абстрактный класс — это прежде всего класс, а значит, не поддерживает множественное наследование. А вот интерфейсы можно имплементить бесконечно. В абстрактном классе можно инкапсулировать абсолютно любое состояние, а вот интерфейс себе такого позволить не может. В абстрактном классе можно задавать дефолтную логику, а в интерфейсе нет. Это пожалуй ключевые отличия.

Все логично. Вот вам абстрактный класс, вот вам интерфейс. Абстрактный класс как шаблон для не определенных объектов, а интерфейс, как контракт о том, что класс должен делать.

С 8 версии ЯП, в интерфейсы добавили возможность устанавливать состояния и добавлять логику в методы.
Вопрос — чем же теперь эти две сущности отличаются? И как понять, где использовать абстрактный класс, а где интерфейс?
  • Вопрос задан
  • 411 просмотров
Подписаться 1 Средний 1 комментарий
Ответ пользователя Jacen11 К ответам на вопрос (3)
Jacen11
@Jacen11
в интерфейсы добавили возможность устанавливать состояния и добавлять логику в методы
в реальной жизни с таким не сталкивался. Теоретически может упростить разработку. В интерфейсе мы описываем возможности объектов и если у разных классов может быть одна реализация метода, почему ее не записать сразу в интерфейсе? Но случай где это будет реально полезно мне придумать сложно
Ответ написан