Junior — Middle
Jaké jsou rozdíly mezi abstrétní třídou a rozhraním v objektově orientovaném programování?
sobes.tech AI
Odpověď od AI
Abstraktní třída a rozhraní jsou různé mechanismy pro popis smluv a chování v objektově orientovaném programování, ale s klíčovými rozdíly:
-
Abstraktní třída může obsahovat jak abstraktní (bez implementace), tak konkrétní metody s implementací. Může mít stav (pole). Třídy dědí od abstraktní třídy a mohou přepisovat metody.
-
Rozhraní popisuje pouze sadu metod bez implementace a neobsahuje stav. Třída, která rozhraní implementuje, musí implementovat všechny jeho metody.
Příklad rozdílů:
- Abstraktní třída je vhodná, když je třeba definovat základní implementaci a společný stav pro dědice.
- Rozhraní se používá k popisu schopností, které mohou být implementovány různými třídami bez dědičnosti.
Například rozhraní Flyable může popisovat metodu fly(), a abstraktní třída Bird může obsahovat pole wingSpan a metodu sing() s implementací.