1.. Warum Schnittstellen verwenden
Wenn es eine Anforderung gibt: Es erfordert die Funktion der Anti-Diebstahltür. Die Tür hat die Funktionen von "Open" und "Close", und das Schloss hat die Funktionen von "Sperren" und "Öffnen".
Analyse: Zunächst einmal ist die Anti-Diebstahltür eine Tür. Die Tür hat die Funktionen, die Tür zu öffnen und zu schließen, und es gibt auch ein Schloss. Das Schloss hat das Entsperren und Verschließen. Nach der Idee der objektorientierten Programmierung werden wir sowohl die Tür als auch die Schloss als Klasse betrachten und separat existieren. Die Anti-Diebstahltür kann jedoch nicht von der Tür und der Selbstverstärkung geerbt werden. Die Anti-Diebstahltür ist kein Schloss, das nicht der Beziehung von IS in der Erbe entspricht. In Java wird eine einzelne Erbschaft unterstützt. Wie lösen wir dieses Problem? Zu diesem Zeitpunkt müssen wir die Schnittstelle verwenden.
2. Was ist eine Schnittstelle
In der Software sind Schnittstellen eine Spezifikation und Standard. Sie können das Verhalten von Klassen einschränken und sind eine Sammlung einiger Methodenfunktionen. Es gibt jedoch keine Implementierung von Methoden. Schnittstellen können tatsächlich als spezielle abstrakte Klasse angesehen werden, verwenden jedoch völlig unterschiedliche Methoden von abstrakten Klassen, um sie darzustellen. Die Designkonzepte der beiden sind ebenfalls unterschiedlich. Abstrakte Klassen fördern der Wiederverwendung von Code und Schnittstellen sind der Code -Expansion und -wartung förderlich.
3.. Der Unterschied zwischen abstrakten Klassen und Schnittstellen:
01Abstract -Klassen können Implementierungsdetails von Mitgliedermethoden bereitstellen, während nur öffentliche abstrakte Methoden in der Schnittstelle vorhanden sind.
02. Mitgliedervariablen in abstrakten Klassen können von verschiedenen Typen sein, während Mitgliedervariablen in Schnittstellen nur von öffentlichem statischen endgültigen Typ sein können.
03. Die Schnittstelle kann keine statischen Codeblöcke und statischen Methoden enthalten, während abstrakte Klassen statische Codeblöcke und statische Methoden haben können.
04. Eine Klasse kann nur eine abstrakte Klasse erben, während eine Klasse mehrere Schnittstellen implementieren kann.
4. So definieren Sie eine Schnittstelle
Schauen wir uns zuerst die Syntax an:
[Modifikator] Schnittstellenoberfläche erweitert die übergeordnete Schnittstelle 1, übergeordnete Schnittstelle 2, ...
{
// Konstante Definition
// Methodendefinition
}
Implementieren Sie die Schnittstellensyntax in einer Klasse:
Klasse Klassenname übergeordnete Klassenname implementiert Schnittstelle 1, Schnittstelle 2, ...
{
// Klassenmitglied
}
5. Definieren der Schnittstellenpunkte
01. Die Namensregeln der Schnittstelle entsprechen denen der Klasse. Wenn der Modifikator öffentlich ist, ist die Schnittstelle im gesamten Projekt sichtbar. Wenn der Modifikator weggelassen wird, ist die Schnittstelle nur im aktuellen Paket sichtbar.
02. Konstanten können in der Schnittstelle definiert werden, aber Variablen können nicht definiert werden. Wenn Sie Attribute in der Schnittstelle definieren, können Sie durch die Dekompilierung feststellen, dass es automatisch mit öffentlichem statischen Finale geändert wird. Die Attribute in der Schnittstelle sind alle globale statische Konstanten, und die Konstanten in der Schnittstelle müssen beim Definieren den Anfangswert angeben.
03. Alle Methoden in der Schnittstelle sind abstrakte Methoden, und Methoden in der Schnittstelle werden automatisch mit öffentlichem Zusammenfassung geändert, dh nur globale abstrakte Methoden in der Schnittstelle.
04. Die Schnittstelle kann nicht instanziiert werden und es kann keine Struktur in der Schnittstelle vorhanden sein.
05 Die Vererbungsbeziehung kann durch Erweiterungen zwischen Schnittstellen realisiert werden. Eine Schnittstelle kann mehrere Schnittstellen erben, aber die Schnittstelle kann keine Klassen erben.
06. Die Schnittstellen -Implementierungsklasse muss alle Methoden der Schnittstelle implementieren, sonst muss sie als abstrakte Klasse definiert werden.