Bei Kapselung und Schnittstellen kapselt das Schlüsselwort private die internen Mitglieder des Objekts. Nach der Kapselung verbirgt das Produkt die internen Details und stellt nur die Benutzeroberfläche bereit.
Schnittstelle ist ein sehr nützliches Konzept, das unser abstraktes Denken unterstützen kann. Wenn wir im wirklichen Leben an ein bestimmtes Gerät denken, denken wir oft an die funktionale Schnittstelle des Geräts. Beispielsweise denken wir bei einem Becher mehr über die Möglichkeit nach, Wasser hinzuzufügen und Wasser zu trinken, als über das Material und den Preis des Bechers. Mit anderen Worten: Die Schnittstelle des Geräts entspricht gewissermaßen dem Gerät selbst. Interne Details wurden aus dem Denkprozess ausgeschlossen.
eine Tasse im Sinn
Im öffentlichen und privaten Kapselungsmechanismus definieren wir tatsächlich gleichzeitig Klassen und Schnittstellen, und Klassen und Schnittstellen werden miteinander vermischt. Java stellt auch die Schnittstellensyntax bereit. Diese Syntax trennt die Schnittstelle von der spezifischen Definition der Klasse und bildet einen unabhängigen Körper.
Schnittstelle
Definieren Sie am Beispiel einer Tasse eine Tassenschnittstelle:
Kopieren Sie den Codecode wie folgt:
Schnittstellenbecher {
void addWater(int w);
void drinkWater(int w);
}
Die Cup-Schnittstelle definiert die Prototypen von zwei Methoden: addWater() und drinkWater(). Der Prototyp einer Methode gibt den Methodennamen, die Parameterliste und den Rückgabetyp an. Prototypen können der Außenwelt mitteilen, wie diese Methoden anzuwenden sind.
In der Schnittstelle, wir
1. Der Hauptteil der Methode muss nicht definiert werden
2. Es ist nicht erforderlich, die Sichtbarkeit der Methode anzugeben
Beachten Sie den zweiten Punkt: Die Methoden in der Schnittstelle sind standardmäßig öffentlich. Wie wir in Kapselung und Schnittstellen erwähnt haben, bilden die öffentlichen Methoden einer Klasse eine Schnittstelle. Daher sind alle in der Schnittstelle angezeigten Methoden standardmäßig öffentlich.
Wir können die Schnittstelle in der Definition einer Klasse implementieren, wie zum Beispiel dem folgenden MusicCup (einem Becher, der Musik abspielen kann):
Kopieren Sie den Codecode wie folgt:
Klasse MusicCup implementiert Cup
{
public void addWater(int w)
{
this.water = this.water + w;
}
public void drinkWater(int w)
{
this.water = this.water - w;
}
privates int wasser = 0;
}
Wir verwenden das Schlüsselwort „implements“, um die Schnittstelle zu implementieren. Sobald eine Schnittstelle in einer Klasse implementiert ist, müssen alle Methoden der Schnittstelle (addWater() und drinkWater()) in der Klasse definiert werden. Die Methoden in der Klasse müssen mit den Methodenprototypen in der Schnittstelle übereinstimmen. Andernfalls meldet Java einen Fehler.
Andere öffentliche Methoden, die nicht von der Schnittstelle erwähnt werden, können in der Klasse definiert werden. Mit anderen Worten: Schnittstelle gibt eine Mindestschnittstelle an, die implementiert werden muss. Beispielsweise gibt die folgende Methode „waterContent()“ keinen Prototyp in der Cup-Schnittstelle an:
Kopieren Sie den Codecode wie folgt:
Klasse MusicCup implementiert Cup
{
public void addWater(int w)
{
this.water = this.water + w;
}
public void drinkWater(int w)
{
this.water = this.water - w;
}
public int waterContent()
{
gib dieses Wasser zurück;
}
privates int wasser = 0;
}
Die Bedeutung separater Schnittstellen
Wir haben eine Schnittstelle verwendet, aber diese Schnittstelle hat unseren Arbeitsaufwand bei der Definition von Klassen nicht verringert. Wir müssen nach wie vor Klassen spezifisch schreiben. Wir müssen sogar noch mehr darauf achten, die Regeln der Schnittstelle nicht zu verletzen. Warum verwenden wir in diesem Fall die Schnittstelle?
Tatsächlich ähnelt die Schnittstelle einem Industriestandard. Eine Fabrik (Klasse) kann Industriestandards übernehmen (Schnittstelle implementieren) oder nicht. Ein Produkt, das Industriestandards übernimmt, bietet jedoch die folgenden Vorteile:
1. Höhere Qualität: Tassen ohne Wasserzugabefunktion entsprechen nicht den Standards.
2. Einfachere Werbung: Genau wie die USB-Schnittstelle eines Computers können nachgelagerte Produkte einfacher angeschlossen werden.
Wenn wir bereits über ein Java-Programm verfügen, wird es zur Verarbeitung von Objekten verwendet, die der Cup-Schnittstelle entsprechen, beispielsweise um Kinder dazu zu bringen, Wasser zu trinken. Solange wir dann sicher sind, dass wir die Cup-Schnittstelle für den Becher (Objekt) des Kindes implementieren, können wir sicherstellen, dass das Kind die Aktion Wasser trinken ausführen kann. Wie dieser Becher (Objekt) konkret die Wirkung von Wassertrinken definiert, können wir der entsprechenden Klasse überlassen (z. B. durch einen Strohhalm trinken oder einen kleinen Mund zum Trinken öffnen).
In der Informatik ist die Schnittstelle ein sehr wichtiges Konzept. Beispielsweise kann jedes Betriebssystem, das eine UNIX-Schnittstelle bereitstellt, als UNIX-System bezeichnet werden. Linux, Mac OS und Solaris sind allesamt UNIX-Systeme und bieten ähnliche Schnittstellen. Allerdings unterscheidet sich die spezifische Implementierung (Quellcode) jedes Systems voneinander. Linux ist Open Source und Sie können jede Zeile seines Codes einsehen, wissen aber immer noch nicht, wie man ein Solaris-System programmiert.
Gleiche UNIX-Schnittstelle
Implementieren Sie mehrere Schnittstellen
Eine Klasse kann mehr als eine Schnittstelle implementieren. Wir haben zum Beispiel folgende Schnittstelle:
Kopieren Sie den Codecode wie folgt:
Schnittstelle MusicPlayer {
void play();
}
Betrachten wir noch einmal die MusicCup-Klasse. MusicCup kann als Hybrid aus Player und Pokal betrachtet werden.
Daher sollte MusicCup über zwei Schnittstellensätze verfügen, dh die MusicPlayer-Schnittstelle und die Cup-Schnittstelle gleichzeitig implementieren:
Kopieren Sie den Codecode wie folgt:
Die Klasse MusicCup implementiert MusicPlayer, Cup
{
public void addWater(int w)
{
this.water = this.water + w;
}
public void drinkWater(int w)
{
this.water = this.water - w;
}
öffentliches leeres Spiel()
{
System.out.println("la...la...la");
}
privates int wasser = 0;
}
Schließlich können Sie versuchen, die Schnittstellen- und Klassendefinitionen in diesem Artikel in derselben Datei abzulegen, die Testklasse zu schreiben und sie auszuführen.
Zusammenfassen
Schnittstelle, Methodenstereotyp, öffentlich
implementiert Schnittstelle
implementiert Schnittstelle1, Schnittstelle2