Junior — Middle
102
Какие отличия существуют между абстрактным классом и интерфейсом в объектно-ориентированном программировании?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Абстрактный класс и интерфейс — это разные механизмы для описания контрактов и поведения в ООП, но с ключевыми отличиями:
-
Абстрактный класс может содержать как абстрактные (без реализации), так и конкретные методы с реализацией. Он может иметь состояние (поля). Классы наследуют абстрактный класс и могут переопределять методы.
-
Интерфейс описывает только набор методов без реализации и не содержит состояния. Класс, реализующий интерфейс, обязан реализовать все его методы.
Пример отличий:
- Абстрактный класс подходит, когда нужно задать базовую реализацию и общее состояние для наследников.
- Интерфейс используется для описания возможностей, которые могут быть реализованы разными классами, не связанных наследованием.
Например, интерфейс Flyable может описывать метод fly(), а абстрактный класс Bird может содержать поле wingSpan и метод sing() с реализацией.