Co je dědičnost rozhraní?
Rozhraní dědičnost je mechanismus v některých počítačových jazycích, kde jsou specifické funkce 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řídy zahrnuje více než jedno samostatné rozhraní. Pro každé další rozhraní, které je zděděno, výslednéTřída může být legitimně použita jako instance každého z nich. Pokud by třída zdědila z deseti různých rozhraní, mohly by být objekty této třídy použity jako instance jedenácti různých objektů, včetně sebe.
Taková komplexní 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 udě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 do třídy přidat komplexní funkce, aniž by se obával nejkomplikovaných problémů s dědictvím.
Jedna z největších výhod USIDědičnost rozhraní NG je, že umožňuje použití specifických objektů v obecném smyslu. 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 použít. Rozhraní nemohou být samostatně vybavena, protože nejsou úplná, takže by nikdy nebyl objekt, který by byl čistě instancí třídy C jako parametru.