Middle
Каква е разликата между абстрактен клас и интерфейс?
sobes.tech AI
Отговор от AI
Абстрактен клас — това е клас, който може да съдържа както реализирани методи, така и абстрактни (без реализация). Той служи като база за наследяване и може да съдържа състояние (поля).
Интерфейс — това е договор, който определя набор от методи без реализация (в класическия смисъл). Класът, реализиращ интерфейса, трябва да реализира всички негови методи.
Основни разлики:
- Абстрактният клас може да съдържа реализация и състояние, интерфейсът — само сигнатури на методи (в някои езици интерфейсите могат да съдържат дефолтни методи).
- Един клас може да наследи само от един абстрактен клас, но може да реализира няколко интерфейса.
- Абстрактният клас задава частична реализация, интерфейсът — само договор.
Пример на Java:
abstract class Animal {
void eat() { System.out.println("Яде"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Чурулика"); }
public void fly() { System.out.println("Лети"); }
}