Bei der objektorientierten Programmierung ist es nützlich zu definieren, was eine Klasse tun soll, aber nicht wie.
Eine abstrakte Methode definiert die Signatur einer Methode, ohne eine Implementierung bereitzustellen, und die Unterklasse muss diese Methode implementieren.
Eine Schnittstelle in Java ermöglicht es Ihnen, die Definition dessen, was getan werden soll, vollständig von der Implementierung dessen, wie es zu tun ist, zu trennen.
Eine Schnittstelle kann Methoden ohne Körper angeben, die von Klassen implementiert werden müssen.
Es gibt keine Begrenzung für die Anzahl der Klassen, die eine Schnittstelle implementieren können, und eine Klasse kann mehrere Schnittstellen implementieren.
Um eine Schnittstelle zu implementieren, muss die Klasse die Implementierung der beschriebenen Methoden bereitstellen.
Verschiedene Klassen können dieselbe Schnittstelle auf unterschiedliche Weise implementieren, aber dieselben Methoden verwenden.
Die Verwendung von Schnittstellen ermöglicht Polymorphismus, da Objekte aus verschiedenen Klassen austauschbar behandelt werden können.
JDK 8 führte die Möglichkeit für Schnittstellen ein, Standardimplementierungen für Methoden zu definieren, sodass eine Schnittstelle das Verhalten festlegen kann.
Trotz Standardimplementierungen bleibt die ursprüngliche Absicht von Schnittstellen, nur das zu definieren, weitgehend unverändert.
Der Schwerpunkt liegt zunächst auf traditionellen Schnittstellen, mit einer Diskussion der Standardmethoden am Ende des Kapitels.
Zugriffsschnittstellenname {
ret-type method-name1(param-list);
ret-type method-name2(param-list);
Typ var1 = value;
Typ var2 = value;
// ...
ret-type method-nameN(param-list);
Typ varN = value;
}
Der Zugriff auf eine Schnittstelle kann öffentlich oder Standardzugriff (paketprivat) sein.
Wenn keine Zugriffsmodifikatoren enthalten sind, ist die Schnittstelle nur für Mitglieder ihres Pakets zugänglich.
Wenn die Schnittstelle als öffentlich deklariert ist, kann sie von jedem Code verwendet werden und muss sich in einer Datei mit demselben Namen befinden.
Der Schnittstellenname kann ein beliebiger gültiger Bezeichner sein.
In der traditionellen Form einer Schnittstelle werden Methoden nur mit ihrem Rückgabetyp und ihrer Signatur deklariert und sind im Wesentlichen abstrakte Methoden.
Klassen, die diese Schnittstelle implementieren, müssen Implementierungen für alle ihre Methoden bereitstellen, die implizit öffentlich sind.
Variablen in einer Schnittstelle sind keine Instanzvariablen; Sie sind implizit öffentlich, endgültig und statisch und müssen initialisiert werden (sie sind Konstanten).
Beispiel einer Schnittstellendefinition:
public interface Series {
int getNext(); // gibt die nächste Zahl in der Reihe zurück
void reset(); // neu starten
void setStart(int x); // definiert den Anfangswert
}
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3