WikiDer > Schnittstelle (Java)
EIN Schnittstelle in dem Programmiersprache Java ist eine Art abstrakte Klasse Das hier Schnittstelle bezeichnet das Klassen umsetzen kann. Eine Schnittstelle wird durch das StichwortSchnittstelle und enthält nur undefined Methoden und/oder statische Konstanten (mit Finale und statisch).
Überblick
EIN Klasse kann eine Schnittstelle implementieren mit implementiert (Ähnlich zu erweitert vor dem Erbe), wonach die undefinierten Methoden der Schnittstelle in dieser Klasse definiert werden müssen. Eine Klasse, die eine Schnittstelle implementiert, aber nicht alle Methoden definiert, kann mit dem Schlüsselwort . in eine abstrakte Klasse umgewandelt werden abstrakt - Die undefinierten Methoden müssen dann in einer Unterklasse definiert werden.
Da Schnittstellen abstrakt sind, ist dies nicht möglich Objekte eine Schnittstelle zu erstellen. Verwenden einer Schnittstelle in JavaCode (zum Beispiel, wenn Art von a Parameter) bezieht sich auf Null oder eine Klasse, die diese Schnittstelle implementiert. Das Stichwort abstrakt muss nicht vor den undefinierten Methoden platziert werden, da alle Methoden in einer Schnittstelle definitionsgemäß abstrakt sind.
Eine Klasse kann mehrere Schnittstellen implementieren, aber nur (direkt) von einer Klasse erben. Ein Unterschied zu abstrakten Klassen besteht darin, dass eine abstrakte Klasse definierte Methoden enthalten kann, eine Schnittstelle jedoch nur undefinierte Methoden enthält. Außerdem kann eine Schnittstelle keine anderen Schnittstellen implementieren, sondern kann von einer anderen Schnittstelle erben, so dass Unterschnittstellen erstellt werden können.
Benutzen
Eine Schnittstelle in Java hat die folgende Form:
SichtweiteSchnittstelleNameSchnittstelle [erweitertNameSchnittstelle] { Deklarationen von KonstantenDeklarationen undefinierter Methoden}und eine Schnittstelle kann wie folgt verwendet werden, wobei die Namen mehrerer Schnittstellen durch Kommas getrennt werden:
SichtweiteKlasseNameKlasseimplementiertNameSchnittstelle, NameSchnittstelle, ... { Implementierungen von Methoden in Schnittstelle(n) }Beispiel
Im folgenden Beispiel definieren wir eine Schnittstelle beweglich die durch Klassen implementiert werden können. Diese Schnittstelle enthält die Methode Bewegung die angibt, wie ein Objekt verschoben werden kann. Diese Methode muss von den implementierenden Klassen wie Football oder Auto ausgearbeitet werden, da sie je nach Objekt variieren kann.
ÖffentlichkeitSchnittstellebeweglich{ÖffentlichkeitLeereBewegung(RichtungRichtung);}Die Implementierung dieser Schnittstelle ist wie folgt:
ÖffentlichkeitKlasseTabelleimplementiertbeweglich{ÖffentlichkeitLeereBewegung(RichtungRichtung){// hier programmieren Sie, wie eine Tabelle verschoben werden soll}}Anwendung
Schnittstellen können verwendet werden, um dem Softwaredesign Abstraktion hinzuzufügen. Bestimmte Informationen müssen nicht im gesamten Programm bekannt sein, damit die Anwendung funktioniert.
Beispiel
Angenommen, ein Programm kann Informationen von verschiedenen Orten laden, wie z Datenbank, ein XMLDatei oder a Textdatei. Wenn die Informationen geladen werden müssen, könnte man sich die Situation ansehen und dann den entsprechenden Code ausführen. Es ist auch möglich, hierfür eine Schnittstelle zu verwenden:
ÖffentlichkeitSchnittstelleInformationenLadegerät{ÖffentlichkeitInformationLadenInformationen();}ÖffentlichkeitKlasseDatabaseLoaderimplementiertInformationenLadegerät{ÖffentlichkeitInformationLadenInformationen(){// Informationen aus einer Datenbank abrufen}}ÖffentlichkeitKlasseXMLLoaderimplementiertInformationenLadegerät{ÖffentlichkeitInformationLadenInformationen(){// Informationen aus einer XML-Datei abrufen}}ÖffentlichkeitKlasseTextLoaderimplementiertInformationenLadegerät{ÖffentlichkeitInformationLadenInformationen(){// Informationen aus einer Textdatei abrufen}}Wenn die Informationen geladen werden müssen, muss nur die Methode loadInformation() für den verfügbaren InformationLoader aufgerufen werden. An dieser Stelle im Programm muss nicht festgelegt werden, von welcher Stelle die Informationen geladen werden: Es wurde eine Abstraktion eingebaut, damit man sich nicht um die genauen Details des Ladens der Informationen kümmern muss:
InformationInformation=InformationenLadegerät.LadenInformationen();Von welchem Ort die Informationen geladen werden, hängt davon ab, welcher Information Loader verwendet wird. Es kann sein, dass dies an einer ganz anderen Stelle im Programm festgestellt wird, zum Beispiel beim Einlesen einiger Konfigurationsdateien. Wenn Sie eine der folgenden Regeln verwenden, wird ein InformationLoader erstellt, den der Rest des Programms verwenden kann:
InformationenLadegerätInformationenLadegerät=NeuDatabaseLoader();// 1InformationenLadegerätInformationenLadegerät=NeuXMLLoader();// 2InformationenLadegerätInformationenLadegerät=NeuTextLoader();// 3Außerdem kann die Funktion des restlichen Programms geändert werden, indem nur diese Zeile geändert wird (dh durch Verwendung eines anderen InformationLoaders erhält der Rest des Programms die Informationen plötzlich von einer anderen Stelle).