Generické implementace
Rozhraní
 Vytisknout studijní materiál

Rozhraní

Java poskytuje na specializaci, kromě dědičnosti, další prostředek - rozhraní. Rozhraní definuje soubor metod bez jejich implementace. Jde tedy o koncepčně stejnou myšlenku jako jsme použili při ADT, kde jsme pomocí rozhraní oddělili definici operací a jejich implementaci. Třída, která implementuje rozhraní, tedy definovaný soubor metod, (tj. jakoby je zdědí), musí implementovat (tj. jakoby překrýt) všechny metody rozhraní.

Deklarace rozhraní je podobná deklaraci třídy

interface jmeno {

// hlavičky metod

}

Každá třída, která implementuje toto rozhraní musí obsahovat deklarace všech metod rozhraní. Implementování rozhraní R třídou T zapíšeme

T implements R {

...

}

Za předpokladu, že rozhraní je implementováno nějakou třídou, lze k instancím takovéto třídy přistupovat pomocí referenční proměnné typu rozhraní obdobně, jako lze přistupovat k instancím podtřídy pomocí referenčních proměnných nadtřídy.

Pro generické řazení pomocí porovnávání, musí řazené prvky mít metodu mensi( ) pro porovnání s jiným prvkem. Jinými slovy musí implementovat následující rozhraní Porovnatelny

interface Porovnatelny {

boolean mensi (Porovnatelny v);

}

Třída Razeni por generické řazení vkládáním prvků implementujících toto rozhraní, tedy prvků typu rozhraní Porovantelny je na obr..

Pro řazení celočíselných klíčů potom definujeme třídu IntPrvek implementující rozhraní Porovnatelny uvednou na obr.. Uvědomme si, že třída Razeni je použitelná pro jakékoliv prvky, v kterých vybereme klíč libovolného typu, pro který napíšeme metodu mensi( ).