Sobes.tech
Back to questions
Junior — Middle
81

Какие отличия существуют между абстрактным классом и интерфейсом в объектно-ориентированном программировании?

Companies where asked
Банк ОткрытиеБанк Открытие
IT OneIT One
AstonAston

Answer from AI

sobes.tech AI

Абстрактный класс и интерфейс — это разные механизмы для описания контрактов и поведения в ООП, но с ключевыми отличиями:

  • Абстрактный класс может содержать как абстрактные (без реализации), так и конкретные методы с реализацией. Он может иметь состояние (поля). Классы наследуют абстрактный класс и могут переопределять методы.

  • Интерфейс описывает только набор методов без реализации и не содержит состояния. Класс, реализующий интерфейс, обязан реализовать все его методы.

Пример отличий:

  • Абстрактный класс подходит, когда нужно задать базовую реализацию и общее состояние для наследников.
  • Интерфейс используется для описания возможностей, которые могут быть реализованы разными классами, не связанных наследованием.

Например, интерфейс Flyable может описывать метод fly(), а абстрактный класс Bird может содержать поле wingSpan и метод sing() с реализацией.