Sobes.tech
Middle

Čím se liší abstraktní třída od rozhraní?

sobes.tech AI

Odpověď od AI

Abstraktní třída — je třída, která může obsahovat jak implementované metody, tak abstraktní (bez implementace). Slouží jako základ pro dědičnost a může obsahovat stav (pole).

Rozhraní — je smlouva, která definuje sadu metod bez implementace (v klasickém smyslu). Třída, která rozhraní implementuje, musí implementovat všechny jeho metody.

Hlavní rozdíly:

  • Abstraktní třída může obsahovat implementaci a stav, rozhraní pouze podpisy metod (v některých jazycích mohou rozhraní obsahovat výchozí metody).
  • Třída může dědit pouze od jedné abstraktní třídy, ale může implementovat více rozhraní.
  • Abstraktní třída poskytuje částečnou implementaci, rozhraní pouze smlouvu.

Příklad v Javě:

abstract class Animal {
    void eat() { System.out.println("Jí"); }
    abstract void sound();
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("Pípat"); }
    public void fly() { System.out.println("Létá"); }
}