Junior
41
questionbank

В чем разница между интерфейсом и абстрактным классом?

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

Интерфейс определяет контракт для классов, указывая набор методов, которые должны быть реализованы. Может содержать только сигнатуры методов (до Java 8) и константы. Множественное наследование интерфейсов разрешено.

Абстрактный класс может содержать абстрактные и конкретные методы, поля и конструкторы. Не может быть инстанцирован напрямую. МожетD иметь только одного непосредственного родителя (ограничение на множественное наследование классов).

Основные отличия:

ХарактеристикаИнтерфейсАбстрактный класс
Множественное наследованиеДа (для имплементации)Нет (для расширения)
МетодыТолько абстрактные (до Java 8), могут быть default и static (с Java 8)Абстрактные и конкретные
ПоляCтатические и финальные константыЛюбые (static, final, primitive, reference)
КонструкторыНетЕсть
РеализацияРеализуется (implements)Расширяется (extends)