Co je rozhraní v Javě?
Interface Java programování je definována jako abstraktní typu používaného k určení chování třídy. Rozhraní Java obsahuje statické konstanty a abstraktní metody. Třída může implementovat více rozhraní. V Javě jsou rozhraní deklarována pomocí klíčového slova interface. Všechny metody v rozhraní jsou implicitně veřejné a abstraktní.
Syntaxe pro deklaraci rozhraní
interface {//methods}
Chcete-li ve své třídě použít rozhraní, přidejte za název své třídy klíčové slovo „implementuje“ a za něj název rozhraní.
Příklad implementace rozhraní
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Pokud video není přístupné, klikněte sem
Proč je vyžadováno rozhraní?
Chcete-li lépe porozumět konceptu rozhraní Java, podívejte se na příklad. Třída „Media Player“ má dvě podtřídy: CD přehrávač a DVD přehrávač. Každý z nich má svůj jedinečný způsob implementace pro přehrávání hudby.
Další třída „Kombinovaná jednotka“ dědí disky CD i DVD (viz obrázek níže). Který způsob hraní by měl zdědit? To může způsobit vážné problémy s designem. A proto Java neumožňuje vícenásobné dědictví.
Nyní si vezmeme další příklad Psa.
Předpokládejme, že máte požadavek, kde třída „pes“ dědí třídu „zvíře“ a „mazlíček“ (viz obrázek níže). V Javě ale nelze rozšířit dvě třídy. Co bys dělal? Řešením je rozhraní.
Pravidla pro rozhraní říká:
- Rozhraní je 100% abstraktní třída a má pouze abstraktní metody.
- Třída může implementovat libovolný počet rozhraní.
Class Dog lze rozšířit na třídu „Animal“ a implementovat rozhraní jako „Pet“.
Příklad rozhraní Java:
Krok 1) Zkopírujte následující kód do editoru.
rozhraní Pet {test veřejné neplatnosti ();}třída Pes implementuje Pet {test veřejné neplatnosti () {System.out.println ("Implementována metoda rozhraní");}public static void main (String args []) {Pet p = nový pes ();p.test ();}}
Krok 2) Uložte, zkompilujte a spusťte kód. Sledujte výstup.
Rozdíl mezi třídou a rozhraním
Třída | Rozhraní |
---|---|
Ve třídě můžete vytvořit instanci proměnné a vytvořit objekt. | V rozhraní nemůžete vytvořit instanci proměnné a vytvořit objekt. |
Třída může obsahovat konkrétní (s implementací) metody | Rozhraní nemůže obsahovat konkrétní (s implementací) metody |
Specifikátory přístupu používané s třídami jsou soukromé, chráněné a veřejné. |
V rozhraní se používá pouze jeden specifikátor - Veřejný. |
Kdy použít rozhraní a abstraktní třídu?
- Když je třeba definovat šablonu pro skupinu podtříd, použijte abstraktní třídu
- Rozhraní použijte, když je třeba definovat roli pro jiné třídy, bez ohledu na strom dědičnosti těchto tříd
Musí vědět fakta o rozhraní
- Třída Java může implementovat více rozhraní Java. Je nutné, aby třída musela implementovat všechny metody deklarované v rozhraních.
- Třída by měla přepsat všechny abstraktní metody deklarované v rozhraní
- Rozhraní umožňuje odeslat zprávu objektu bez ohledu na to, do kterých tříd patří.
- Třída musí poskytovat funkce pro metody deklarované v rozhraní.
- Všechny metody v rozhraní jsou implicitně veřejné a abstraktní
- Nelze vytvořit instanci rozhraní
- Odkaz na rozhraní může ukazovat na objekty jeho implementačních tříd
- Rozhraní se může rozšířit z jednoho nebo více rozhraní. Třída může rozšířit pouze jednu třídu, ale implementovat libovolný počet rozhraní
- Rozhraní nemůže implementovat jiné rozhraní. V případě potřeby musí rozšířit další rozhraní.
- Rozhraní deklarované uvnitř jiného rozhraní se označuje jako vnořené rozhraní
- V době deklarace musí být proměnná rozhraní inicializována. Jinak kompilátor vyvolá chybu.
- Třída nemůže implementovat dvě rozhraní v Javě, která mají metody se stejným názvem, ale odlišným návratovým typem.
Shrnutí :
- Třída, která implementuje rozhraní, musí poskytovat funkce pro metody deklarované v rozhraní
- Všechny metody v rozhraní jsou implicitně veřejné a abstraktní
- Nelze vytvořit instanci rozhraní
- Odkaz na rozhraní může ukazovat na objekty jeho implementačních tříd
- Rozhraní se může rozšířit z jednoho nebo více rozhraní. Třída může rozšířit pouze jednu třídu, ale implementovat libovolný počet rozhraní