Sobes.tech
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í.