Čo je to rozhranie v Jave s príkladom

Obsah:

Anonim

Čo je to rozhranie v Jave?

Interface Java programovanie je definovaná ako abstraktné typu používaného na určenie správania triedy. Rozhranie Java obsahuje statické konštanty a abstraktné metódy. Trieda môže implementovať viac rozhraní. V prostredí Java sa rozhrania deklarujú pomocou kľúčového slova interface. Všetky metódy v rozhraní sú implicitne verejné a abstraktné.

Syntax pre deklaračné rozhranie

interface {//methods}

Ak chcete vo svojej triede používať rozhranie, pripojte za názov svojej triedy kľúčové slovo „implementuje“ a za ním názov rozhrania.

Príklad implementácie rozhrania

class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle

Ak video nie je prístupné, kliknite sem

Prečo je potrebné rozhranie?

Ak chcete lepšie porozumieť konceptu rozhrania Java, pozrite si príklad. Trieda „Prehrávač médií“ má dve podtriedy: prehrávač CD a DVD. Každý z nich má svoj jedinečný spôsob implementácie na prehrávanie hudby.

Ďalšia „kombinovaná jednotka“ zdedí disky CD aj DVD (pozri obrázok nižšie). Ktorý spôsob hry by mal dediť? To môže spôsobiť vážne problémy s dizajnom. Preto Java neumožňuje viacnásobné dedenie.

Zoberme si ďalší príklad Psa.

Predpokladajme, že máte požiadavku, aby trieda „pes“ dedila triedu „zviera“ a „domáce zviera“ (pozri obrázok nižšie). Ale v Jave nemôžete rozšíriť dve triedy. Čo by ste robili? Riešením je rozhranie.

Pravidlá pre rozhranie hovoria:

  • Rozhranie je 100% abstraktná trieda a má iba abstraktné metódy.
  • Trieda môže implementovať ľubovoľný počet rozhraní.

Class Dog sa dá rozšíriť do triedy „Animal“ a implementovať rozhranie ako „pet“.

Príklad rozhrania Java:

Krok 1) Skopírujte nasledujúci kód do editora.

rozhranie Pet {test verejnej neplatnosti ();}trieda Pes realizuje Pet {test verejnej neplatnosti () {System.out.println ("Implementovaná metóda rozhrania");}public static void main (String args []) {Domáce zviera p = nový pes ();p.test ();}}

Krok 2) Uložte, kompilujte a spustite kód. Sledujte výstup.

Rozdiel medzi triedou a rozhraním

Trieda Rozhranie
V triede môžete vytvoriť inštanciu premennej a vytvoriť objekt. V rozhraní nemôžete vytvoriť inštanciu premennej a vytvoriť objekt.
Trieda môže obsahovať konkrétne (s implementáciou) metódy Rozhranie nemôže obsahovať konkrétne (s implementáciou) metódy

Špecifikátory prístupu používané s triedami sú súkromné, chránené a verejné.

V rozhraní sa používa iba jeden špecifikátor - verejný.

Kedy použiť rozhranie a abstraktnú triedu?

  • Abstraktnú triedu použite, keď je potrebné definovať šablónu pre skupinu podtried
  • Rozhranie použite, keď je potrebné definovať rolu pre iné triedy, bez ohľadu na strom dedičnosti týchto tried

Musí vedieť fakty o rozhraní

  • Trieda Java môže implementovať viac rozhraní Java. Je nevyhnutné, aby trieda musela implementovať všetky metódy deklarované v rozhraniach.
  • Trieda by mala prepísať všetky abstraktné metódy deklarované v rozhraní
  • Rozhranie umožňuje poslať správu objektu bez ohľadu na to, do ktorých tried patrí.
  • Trieda musí poskytovať funkčnosť metódam deklarovaným v rozhraní.
  • Všetky metódy v rozhraní sú implicitne verejné a abstraktné
  • Rozhranie nemožno vytvoriť
  • Odkaz na rozhranie môže smerovať na objekty jeho implementačných tried
  • Rozhranie môže byť rozšírené z jedného alebo viacerých rozhraní. Trieda môže rozšíriť iba jednu triedu, ale implementovať ľubovoľný počet rozhraní
  • Rozhranie nemôže implementovať iné rozhranie. V prípade potreby musí rozšíriť ďalšie rozhranie.
  • Rozhranie, ktoré je deklarované vo vnútri iného rozhrania, sa označuje ako vnorené rozhranie
  • V čase deklarácie musí byť premenná rozhrania inicializovaná. V opačnom prípade kompilátor vyhodí chybu.
  • Trieda nemôže implementovať dve rozhrania v jave, ktoré majú metódy s rovnakým názvom, ale odlišným návratovým typom.

Zhrnutie :

  • Trieda, ktorá implementuje rozhranie, musí poskytovať funkčnosť metódam deklarovaným v rozhraní
  • Všetky metódy v rozhraní sú implicitne verejné a abstraktné
  • Rozhranie nemožno vytvoriť
  • Odkaz na rozhranie môže smerovať na objekty jeho implementačných tried
  • Rozhranie môže byť rozšírené z jedného alebo viacerých rozhraní. Trieda môže rozšíriť iba jednu triedu, ale implementovať ľubovoľný počet rozhraní