Назад к вопросам
Junior
69
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

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

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

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