Co je rozhraní v Javě s příkladem

Obsah:

Anonim

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í