een interface is een referentietype in Java. Het is vergelijkbaar met klasse. Het is een verzameling van abstracte methoden. Een klasse implementeert een interface, waardoor de abstracte methoden van de interface erven.
samen met abstracte methoden kan een interface ook constanten, standaardmethoden, statische methoden en geneste types bevatten. Method body ‘ s bestaan alleen voor standaard methoden en statische methoden.,
het schrijven van een interface is vergelijkbaar met het schrijven van een klasse. Maar een klasse beschrijft de eigenschappen en het gedrag van een object. En een interface bevat gedrag dat een klasse implementeert.
tenzij de klasse die de interface implementeert abstract is, moeten alle methoden van de interface in de klasse worden gedefinieerd.
een interface is op de volgende manieren vergelijkbaar met een klasse −
-
een interface kan een willekeurig aantal methoden bevatten.
-
een interface wordt geschreven in een bestand met een .java extensie, met de naam van de interface die overeenkomt met de naam van het bestand.,
-
de bytecode van een interface verschijnt in a .klassebestand.
-
Interfaces verschijnen in pakketten, en hun corresponderende bytecode-bestand moet in een mapstructuur staan die overeenkomt met de pakketnaam.
een interface verschilt echter op verschillende manieren van een klasse, waaronder −
-
u kunt een interface niet instantiëren.
-
een interface bevat geen constructors.
-
alle methoden in een interface zijn abstract.
-
een interface kan geen instantievelden bevatten., De enige velden die in een interface kunnen verschijnen, moeten statisch en definitief worden verklaard.
-
een interface wordt niet uitgebreid met een klasse; het wordt geïmplementeerd door een klasse.
-
een interface kan meerdere interfaces uitbreiden.
interfaces declareren
het sleutelwoord van de interface wordt gebruikt om een interface te declareren. Hier is een eenvoudig voorbeeld om een interface te declareren –
voorbeeld
volgende is een voorbeeld van een interface −
Interfaces hebben de volgende eigenschappen −
-
een interface is impliciet abstract., U hoeft het abstracte trefwoord niet te gebruiken tijdens het declareren van een interface.
-
elke methode in een interface is ook impliciet abstract, dus het abstracte sleutelwoord is niet nodig.
-
methoden in een interface zijn impliciet openbaar.
voorbeeld
/* File name : Animal.java */interface Animal { public void eat(); public void travel();}
interfaces implementeren
wanneer een klasse een interface implementeert, kunt u denken aan de klasse als het ondertekenen van een contract, waarbij u ermee instemt om het specifieke gedrag van de interface uit te voeren. Als een klasse niet alle gedragingen van de interface uitvoert, moet de klasse zichzelf als abstract verklaren.,
een klasse gebruikt het sleutelwoord implements om een interface te implementeren. Het trefwoord implements verschijnt in de klasseverklaring na het verlengde gedeelte van de verklaring.
voorbeeld
Dit zal het volgende resultaat opleveren –
Output
Mammal eatsMammal travels
wanneer overschrijdende methoden gedefinieerd in interfaces, zijn er verschillende regels die moeten worden gevolgd −
-
gecontroleerde uitzonderingen moeten niet worden gedeclareerd op andere implementatiemethoden dan die gedeclareerd door de interfacemethode of subklassen van die gedeclareerd door de interfacemethode.,
-
de handtekening van de interfacemethode en hetzelfde returntype of subtype moet worden gehandhaafd wanneer de methoden worden gewijzigd.
-
een implementatieklasse zelf kan abstract zijn en als dat zo is, hoeven interface-methoden niet te worden geïmplementeerd.
bij implementatieinterfaces zijn er meerdere regels –
-
Een klasse kan meer dan één interface tegelijk implementeren.
-
een klasse kan slechts één klasse uitbreiden, maar veel interfaces implementeren.
-
een interface kan een andere interface uitbreiden, op dezelfde manier als een klasse een andere klasse kan uitbreiden.,
uitbreidende Interfaces
een interface kan een andere interface uitbreiden op dezelfde manier als een klasse een andere klasse kan uitbreiden. Het breidt trefwoord wordt gebruikt om een interface uit te breiden, en de onderliggende interface erft de methoden van de bovenliggende interface.
de volgende Sportinterface wordt uitgebreid met Hockey-en Voetbalinterfaces.
voorbeeld
De Hockey-interface heeft vier methoden, maar erft er twee van sport; een klasse die Hockey implementeert moet dus alle zes methoden implementeren., Ook een klasse die voetbal implementeert moet de drie methoden van Voetbal en de twee methoden van sport te definiëren.
meerdere Interfaces uitbreiden
Een Java-klasse kan slechts één bovenliggende klasse uitbreiden. Meervoudige overerving is niet toegestaan. Interfaces zijn echter geen klassen en een interface kan meer dan één bovenliggende interface uitbreiden.
het Extended sleutelwoord wordt één keer gebruikt, en de bovenliggende interfaces worden gedeclareerd in een door komma ‘ s gescheiden lijst.,
bijvoorbeeld, als de Hockey −interface zowel sport als Evenement uitbreidde, zou het worden gedeclareerd als –
voorbeeld
public interface Hockey extends Sports, Event
Tagging Interfaces
het meest voorkomende gebruik van uitbreidende interfaces vindt plaats wanneer de bovenliggende interface geen methoden bevat. Bijvoorbeeld, de mouselistener interface in de java.awt.event pakket uitgebreid java.util.EventListener, gedefinieerd als –
voorbeeld
package java.util;public interface EventListener{}
een interface zonder methoden wordt aangeduid als een tagging interface., Er zijn twee fundamentele ontwerpdoeleinden van tagging interfaces −
maakt een gemeenschappelijke ouder-zoals met de EventListener interface, die wordt uitgebreid met tientallen andere interfaces in de Java API, kunt u een tagging interface gebruiken om een gemeenschappelijke ouder te maken tussen een groep interfaces. Bijvoorbeeld, wanneer een interface EventListener uitbreidt, weet de JVM dat deze specifieke interface zal worden gebruikt in een event delegation scenario.
voegt een gegevenstype toe aan een klasse − deze situatie is waar de term, tagging vandaan komt., Een klasse die een tagging interface implementeert hoeft geen methoden te definiëren (omdat de interface er geen heeft), maar de klasse wordt een interface type door polymorfisme.