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