rozhraní je referenční typ v jazyce Java. Je to podobné třídě. Jedná se o sbírku abstraktních metod. Třída implementuje rozhraní, čímž zdědí abstraktní metody rozhraní.
spolu s abstraktními metodami může rozhraní také obsahovat konstanty, výchozí metody, statické metody a vnořené typy. Těla metod existují pouze pro výchozí metody a statické metody.,
psaní rozhraní je podobné psaní třídy. Třída však popisuje atributy a chování objektu. A rozhraní obsahuje chování, které třída implementuje.
Pokud třída, která implementuje rozhraní, není abstraktní, musí být ve třídě definovány všechny metody rozhraní.
rozhraní je podobné třídě následujícími způsoby-
-
rozhraní může obsahovat libovolný počet metod.
-
rozhraní je zapsáno v souboru s a .přípona java, s názvem rozhraní odpovídající názvu souboru.,
-
byte kód rozhraní se objeví v a .třídní složka.
-
rozhraní se objeví v balíčcích a jejich odpovídající soubor bytecode musí být v adresářové struktuře, která odpovídá názvu balíčku.
rozhraní se však liší od třídy několika způsoby,včetně –
-
nelze vytvořit rozhraní.
-
rozhraní neobsahuje žádné konstruktory.
-
všechny metody v rozhraní jsou abstraktní.
-
rozhraní nemůže obsahovat pole instance., Jediná pole, která se mohou objevit v rozhraní, musí být deklarována jak statická, tak konečná.
-
rozhraní není rozšířeno o třídu; je implementováno třídou.
-
rozhraní může rozšířit více rozhraní.
deklarující rozhraní
Klíčové slovo rozhraní se používá k deklaraci rozhraní. Zde je jednoduchý příklad, jak deklarovat rozhraní −
Příklad:
Následující je příklad rozhraní −
Rozhraní mají následující vlastnosti −
-
rozhraní je implicitně abstraktní., Při deklarování rozhraní nemusíte používat abstraktní Klíčové slovo.
-
každá metoda v rozhraní je také implicitně abstraktní, takže abstraktní Klíčové slovo není potřeba.metody
-
V rozhraní jsou implicitně veřejné.
Příklad:
/* File name : Animal.java */interface Animal { public void eat(); public void travel();}
Prováděcí Rozhraní
Pokud třída implementuje rozhraní, můžete si, že třídy, jako je podepsání smlouvy, souhlas k provedení specifické chování rozhraní. Pokud třída neprovádí všechna chování rozhraní, musí se třída prohlásit za abstraktní.,
třída používá implementuje Klíčové slovo k implementaci rozhraní. Implementuje Klíčové slovo se objeví v deklaraci třídy po rozšíření části prohlášení.
Příklad:
To bude produkovat následující výsledek −
Výstup
Mammal eatsMammal travels
Při přepsání metody definované v rozhraní, existuje několik pravidel, která budou následovat −
-
Kontrolované výjimky musí být deklarována na provádění metody jiné než ty deklarované rozhraní, metody nebo podtřídy ty deklarované metody rozhraní.,
-
při přepisování metod by měl být zachován podpis metody rozhraní a stejný návratový typ nebo podtyp.
-
samotná implementační třída může být abstraktní a pokud ano, metody rozhraní nemusí být implementovány.
Při provádění rozhraní, existuje několik pravidel −
-
třída může implementovat více než jedno rozhraní najednou.
-
třída může rozšířit pouze jednu třídu, ale implementovat mnoho rozhraní.
-
rozhraní může rozšířit jiné rozhraní, podobně jako třída může rozšířit jinou třídu.,
rozšíření rozhraní
rozhraní může rozšířit jiné rozhraní stejným způsobem, že třída může rozšířit jinou třídu. Klíčové slovo extends se používá k rozšíření rozhraní a rozhraní child zdědí metody nadřazeného rozhraní.
následující sportovní rozhraní je rozšířeno o hokejové a fotbalové rozhraní.
příklad
hokejové rozhraní má čtyři metody, ale dědí dvě ze sportu; třída, která implementuje Hokej, musí implementovat všech šest metod., Podobně, třída, která implementuje Fotbal, musí definovat tři metody z fotbalu a dvě metody ze sportu.
Rozšíření více rozhraní
třída Java může rozšířit pouze jednu mateřskou třídu. Vícenásobné dědictví není povoleno. Rozhraní však nejsou třídy a rozhraní může rozšířit více než jedno nadřazené rozhraní.
Klíčové slovo extends se používá jednou a nadřazená rozhraní jsou deklarována v seznamu odděleném čárkami.,
například, pokud Hokej rozhraní extended oba Sporty a Akce, to by být deklarován jako −
Příklad:
public interface Hockey extends Sports, Event
Značkování Rozhraní
nejčastější použití rozšíření rozhraní nastane, když rodič rozhraní neobsahuje žádné metody. Například rozhraní MouseListener v Javě.awt.balíček událostí rozšířené java.utile.EventListener, který je definován jako –
příklad
package java.util;public interface EventListener{}
rozhraní bez metod v něm se označuje jako značkovací rozhraní., Existují dva základní konstrukční účely značkování rozhraní −
Vytváří společný rodič − Jako rozhraní EventListener, který je rozšířen o desítky dalších rozhraní v Java API, můžete použít značkování rozhraní vytvořit společného rodiče mezi skupinu rozhraní. Například, když rozhraní rozšiřuje EventListener, JVM ví, že toto konkrétní rozhraní bude použito ve scénáři delegování událostí.
přidá datový typ do třídy – tato situace je místo, kde termín, tagging pochází z., Třída, která implementuje značkovací rozhraní, nemusí definovat žádné metody (protože rozhraní nemá žádné), ale třída se stává typem rozhraní prostřednictvím polymorfismu.