Back to questions
Банк Открытие
IT One
Aston
Junior — Middle
81
Какие отличия существуют между абстрактным классом и интерфейсом в объектно-ориентированном программировании?
Companies where asked
Answer from AI
sobes.tech AI
Абстрактный класс и интерфейс — это разные механизмы для описания контрактов и поведения в ООП, но с ключевыми отличиями:
-
Абстрактный класс может содержать как абстрактные (без реализации), так и конкретные методы с реализацией. Он может иметь состояние (поля). Классы наследуют абстрактный класс и могут переопределять методы.
-
Интерфейс описывает только набор методов без реализации и не содержит состояния. Класс, реализующий интерфейс, обязан реализовать все его методы.
Пример отличий:
- Абстрактный класс подходит, когда нужно задать базовую реализацию и общее состояние для наследников.
- Интерфейс используется для описания возможностей, которые могут быть реализованы разными классами, не связанных наследованием.
Например, интерфейс Flyable может описывать метод fly(), а абстрактный класс Bird может содержать поле wingSpan и метод sing() с реализацией.