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"); }
}