Skip to main content

Co je dědičnost rozhraní?

Dědičnost rozhraní je mechanismus v některých počítačových jazycích, kde specifické funkce jsou zděděny třídou, a pak tato konkrétní třída musí poskytnout implementace pro tyto funkce, aby byla dokončena.Rozhraní existují pouze v určitých objektově orientovaných programovacích jazycích.Mohou být použity k emulaci vícenásobné dědictví, aniž by to ve skutečnosti umožnilo třídě znásobit zdědění, protože obecně neexistují žádné limity počtu rozhraní, ze kterých může třída zdědit.Kromě neimplementovaných metod mohou rozhraní také zahrnovat veřejné konstanty.Pokud by tedy třída X zdědila z rozhraní Y, jakýkoli případ třídy X by byl také příkladem třídy Y. To se komplikuje, když dědičnost rozhraní tříd zahrnuje více než jedno samostatné rozhraní.Pro každé další rozhraní, které je zděděno, může být výsledná třída legitimně použita jako instance každého z nich.Pokud by třída zdědila z deseti různých rozhraní, objekty této třídy by mohly být použity jako instance jedenácti různých objektů, včetně sebe sama.

taková složitá dědičnost není často nutná.Dědičnost rozhraní se používá k zajištění toho, aby třída měla specifickou sadu požadovaného chování, a tato chování jí umožňuje vykonávat různé funkce, které by jinak nemohla dělat.Společným příkladem je rozhraní ActionListener v Java, které vyžaduje, aby třída implementovala pouze jednu konkrétní metodu.Úspěšná implementace této metody umožňuje uživateli ovládat tlačítka, položky nabídky nebo jakýkoli jiný objekt okna ve třídě, pokud je to žádoucí.Dědičnost rozhraní je relativně jednoduchý způsob, jak přidat do třídy složité funkce, aniž by se obával nejsložitějších problémů s dědictvím.Protože třída, která implementuje rozhraní, je instancí tohoto rozhraní, může být použita jakékoli místo, je vyžadována instance tohoto rozhraní.Například, pokud třída A implementuje třídu C a třída B také implementuje třídu C, pokud metoda vezme jako parametr instance třídy C, buď instance třídy A nebo instance třídy B by byla přijatelným parametrem, který je třeba použít.Rozhraní nelze samostatně instalovat, protože nejsou úplné, takže by nikdy nebyl objekt, který by byl čistě příkladem třídy C jako parametru