Sobes.tech
Junior — Middle

Какви са разликите между абстрактен клас и интерфейс в обектно-ориентираното програмиране?

sobes.tech AI

Отговор от AI

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

  • Абстрактен клас може да съдържа както абстрактни (без реализация), така и конкретни методи с реализация. Той може да има състояние (поля). Класовете наследяват абстрактния клас и могат да презапишат методите.

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

Примери за разлики:

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

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