Eine Schnittstelle ist ein Referenztyp in Java. Es ist ähnlich wie Klasse. Es ist eine Sammlung abstrakter Methoden. Eine Klasse implementiert eine Schnittstelle und erbt dadurch die abstrakten Methoden der Schnittstelle.
Zusammen mit abstrakten Methoden kann eine Schnittstelle auch Konstanten, Standardmethoden, statische Methoden und verschachtelte Typen enthalten. Methodenkörper existieren nur für Standardmethoden und statische Methoden.,
Das Schreiben einer Schnittstelle ähnelt dem Schreiben einer Klasse. Eine Klasse beschreibt jedoch die Attribute und Verhaltensweisen eines Objekts. Und eine Schnittstelle enthält Verhaltensweisen, die eine Klasse implementiert.
Sofern die Klasse, die die Schnittstelle implementiert, nicht abstrakt ist, müssen alle Methoden der Schnittstelle in der Klasse definiert werden.
Eine Schnittstelle ähnelt einer Klasse auf folgende Weise –
-
Eine Schnittstelle kann eine beliebige Anzahl von Methoden enthalten.
-
Eine Schnittstelle wird in eine Datei mit einem geschrieben .java-Erweiterung, wobei der Name der Schnittstelle mit dem Namen der Datei übereinstimmt.,
-
Der Bytecode einer Schnittstelle erscheint in a.Klassendatei.
-
Schnittstellen werden in Paketen angezeigt, und die entsprechende Bytecode-Datei muss sich in einer Verzeichnisstruktur befinden, die dem Paketnamen entspricht.
Eine Schnittstelle unterscheidet sich jedoch auf verschiedene Weise von einer Klasse, einschließlich −
-
Sie können eine Schnittstelle nicht instanziieren.
-
Eine Schnittstelle enthält keine Konstruktoren.
-
Alle Methoden in einer Schnittstelle sind Abstrakt.
-
Eine Schnittstelle darf keine Instanzfelder enthalten., Die einzigen Felder, die in einer Schnittstelle angezeigt werden können, müssen sowohl statisch als auch endgültig deklariert werden.
-
Eine Schnittstelle wird nicht durch eine Klasse erweitert, sondern durch eine Klasse implementiert.
-
Eine Schnittstelle kann mehrere Schnittstellen erweitern.
Schnittstellen deklarieren
Zum Deklarieren einer Schnittstelle wird das Schlüsselwort interface verwendet. Hier ist ein einfaches Beispiel, um eine Schnittstelle zu deklarieren –
Beispiel
Es folgt ein Beispiel für eine Schnittstelle −
Schnittstellen haben die folgenden Eigenschaften −
-
Eine Schnittstelle ist implizit abstrakt., Sie müssen beim Deklarieren einer Schnittstelle nicht das abstrakte Schlüsselwort verwenden.
-
Jede Methode in einer Schnittstelle ist ebenfalls implizit abstrakt, sodass das Schlüsselwort abstract nicht benötigt wird.
-
Methoden in einer Schnittstelle sind implizit öffentlich.
Beispiel
/* File name : Animal.java */interface Animal { public void eat(); public void travel();}
Schnittstellen implementieren
Wenn eine Klasse eine Schnittstelle implementiert, können Sie sich vorstellen, dass die Klasse einen Vertrag unterzeichnet und dem spezifischen Verhalten der Schnittstelle zustimmt. Wenn eine Klasse nicht alle Verhaltensweisen der Schnittstelle ausführt, muss sich die Klasse als abstrakt deklarieren.,
Eine Klasse verwendet das Schlüsselwort implements, um eine Schnittstelle zu implementieren. Das Schlüsselwort implements wird in der Klassendeklaration nach dem extends-Teil der Deklaration angezeigt.
Beispiel
Dies erzeugt Folgendes Ergebnis −
Output
Mammal eatsMammal travels
Beim überschreiben von Methoden definiert Schnittstellen, es gibt mehrere Regeln, die befolgt werden −
-
Geprüfte Ausnahmen müssen nicht deklariert werden, auf die Umsetzung von Methoden, die andere als die von der Schnittstelle deklarierten Methode oder Unterklassen dieser von der Schnittstelle deklarierten Methode.,
-
Die Signatur der Schnittstellenmethode und des gleichen Rückgabetyps oder Untertyps sollten beim Überschreiben der Methoden beibehalten werden.
-
Eine Implementierungsklasse selbst kann abstrakt sein, und wenn ja, müssen Schnittstellenmethoden nicht implementiert werden.
Bei Implementierungsschnittstellen gibt es mehrere Regeln –
-
Eine Klasse kann mehr als eine Schnittstelle gleichzeitig implementieren.
-
Eine Klasse kann nur eine Klasse erweitern, aber viele Schnittstellen implementieren.
-
Eine Schnittstelle kann eine andere Schnittstelle erweitern, ähnlich wie eine Klasse eine andere Klasse erweitern kann.,
Schnittstellen erweitern
Eine Schnittstelle kann eine andere Schnittstelle auf die gleiche Weise erweitern, wie eine Klasse eine andere Klasse erweitern kann. Das Schlüsselwort extends wird verwendet, um eine Schnittstelle zu erweitern, und die untergeordnete Schnittstelle erbt die Methoden der übergeordneten Schnittstelle.
Die folgende Sportschnittstelle wird um Hockey-und Fußballschnittstellen erweitert.
Beispiel
Die Hockey-Schnittstelle hat vier Methoden, aber sie erbt zwei von Sport; Daher muss eine Klasse, die Hockey implementiert, alle sechs Methoden implementieren., In ähnlicher Weise muss eine Klasse, die Fußball implementiert, die drei Methoden aus dem Fußball und die beiden Methoden aus dem Sport definieren.
Mehrere Schnittstellen erweitern
Eine Java-Klasse kann nur eine übergeordnete Klasse erweitern. Mehrfachvererbung ist nicht erlaubt. Schnittstellen sind jedoch keine Klassen, und eine Schnittstelle kann mehr als eine übergeordnete Schnittstelle erweitern.
Das Schlüsselwort extends wird einmal verwendet, und die übergeordneten Schnittstellen werden in einer durch Kommas getrennten Liste deklariert.,
Wenn die übergeordnete Schnittstelle beispielsweise sowohl Sport als auch Ereignis erweitert, wird sie als −
Example
public interface Hockey extends Sports, Event
Tagging Interfaces
Die häufigste Verwendung von Erweiterungsschnittstellen tritt auf, wenn die übergeordnete Schnittstelle keine Methoden enthält. Zum Beispiel die MouseListener-Schnittstelle in Java.awt.event-Paket erweitert java.util.EventListener, definiert als –
Example
package java.util;public interface EventListener{}
Eine Schnittstelle ohne Methoden wird als Tagging-Schnittstelle bezeichnet., Es gibt zwei grundlegende Designzwecke von Tagging-Schnittstellen –
Erstellt ein gemeinsames übergeordnetes Element-Wie bei der EventListener-Schnittstelle, die um Dutzende anderer Schnittstellen in der Java-API erweitert wird, können Sie eine Tagging-Schnittstelle verwenden, um ein gemeinsames übergeordnetes Element unter einer Gruppe von Schnittstellen zu erstellen. Wenn eine Schnittstelle beispielsweise EventListener erweitert, weiß die JVM, dass diese bestimmte Schnittstelle in einem Ereignisdelegierungsszenario verwendet wird.
Fügt einer Klasse einen Datentyp hinzu − Aus dieser Situation stammt der Begriff Tagging., Eine Klasse, die eine Tagging-Schnittstelle implementiert, muss keine Methoden definieren (da die Schnittstelle keine hat), aber die Klasse wird durch Polymorphismus zu einem Schnittstellentyp.