Sobes.tech
Middle

Čím sa líši abstraktná trieda od rozhrania?

sobes.tech AI

Odpoveď od AI

Abstraktna trieda — je trieda, ktorá môže obsahovať ako implementované metódy, tak abstraktné (bez implementácie). Slúži ako základ pre dedičstvo a môže obsahovať stav (polia).

Rozhranie — je zmluva, ktorá definuje sadu metód bez implementácie (v klasickom zmysle). Trieda, ktorá rozhranie implementuje, musí implementovať všetky jeho metódy.

Hlavné rozdiely:

  • Abstraktná trieda môže obsahovať implementáciu a stav, rozhranie — len podpisy metód (v niektorých jazykoch môžu rozhrania obsahovať predvolené metódy).
  • Trieda môže dediť iba od jednej abstraktnej triedy, ale môže implementovať viac rozhraní.
  • Abstraktná trieda poskytuje čiastočnú implementáciu, rozhranie — len zmluvu.

Príklad v Jave:

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

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("Pípanie"); }
    public void fly() { System.out.println("Lieta"); }
}