Junior
46
questionbank

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

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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

Абстрактный класс может содержать как абстрактные (без реализации), так и конкретные (с реализацией) методы. Он может иметь поля состояния и использоваться для определения общей структуры и поведения для подклассов. Множественное наследование от абстрактных классов в Java невозможно.

Ключевые отличия:

  • Реализация методов: Интерфейс не имеет реализации, абстрактный класс может иметь.
  • Поля состояния: Интерфейс не имеет полей состояния (кроме констант), абстрактный класс может иметь.
  • Множественное наследование: Класс может реализовывать несколько интерфейсов, но наследовать только один абстрактный класс.
  • Конструкторы: Интерфейс не может иметь конструкторов, абстрактный класс может.

Пример интерфейса:

java

Пример абстрактного класса:

java