Java Core middle
В чём разница: Абстрактный класс vs интерфейс?
Ответ
Абстрактный класс: состояние (поля), конструкторы, один наследник. Интерфейс: контракт, множественная реализация, Java 8 — default/static методы. Когда что: общее поведение + состояние → абстрактный класс; только контракт с множественной реализацией → интерфейс.
Разбор: Абстрактный класс может иметь состояние (поля), конструкторы и реализованные методы, но наследуется только один; интерфейс задаёт контракт с множественной реализацией и с Java 8 поддерживает default/static-методы, но не хранит изменяемого состояния экземпляра. Ловушки переворачивают факты: абстрактный класс умеет реализовывать методы, в Java нет множественного наследования классов, у интерфейса нет конструкторов и обычных полей, а его методы по умолчанию public.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.