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