Die Java -Schnittstelle (Schnittstelle) ist eine Reihe von Methodendeklarationen und eine Sammlung von Methodenfunktionen. Eine Schnittstelle hat nur die Eigenschaften von Methoden, aber keine Methodenimplementierung. Daher können diese Methoden von verschiedenen Klassen an verschiedenen Stellen implementiert werden, und diese Implementierungen können unterschiedliche Verhaltensweisen (Funktionen) haben.
1. Schnittstelle Bedeutung:
1. Java -Schnittstelle, die Strukturen, die in der Java -Sprache existieren, haben eine spezifische Syntax und Struktur;
2. Eine Sammlung von Merkmalen von Methoden, die eine Klasse hat, ist eine logische Abstraktion.
Ersteres heißt "Java -Schnittstelle" und letzteres "Schnittstelle".
Die Java -Schnittstelle selbst hat keine Implementierung, da die Java -Schnittstelle keine Erscheinungen beinhaltet, sondern nur das öffentliche Verhalten beschreibt, sodass die Java -Schnittstelle abstrakter ist als die Java -Abstract -Klasse.
Die Methoden der Java -Schnittstelle können nur abstrakt und öffentlich sein. Die Java -Schnittstelle kann keinen Konstruktor haben. Die Java -Schnittstelle kann öffentliche, statische und endgültige Eigenschaften haben.
2. Warum die Schnittstelle Java verwenden, ist eine einzelne Vererbungssprache? Wenn Sie bestimmte Klassen mit vorhandenen übergeordneten Klassen nach dem OCP -Prinzip neue Funktionen hinzufügen möchten, besteht die Lösung darin, übergeordnete Klassen zu seiner übergeordneten Klasse oder der übergeordneten Klassen über Elternklassen hinzuzufügen, bis sie sich an die Spitze der Klassenhierarchiestruktur bewegt. Auf diese Weise wird das Design der Einsiegelbarkeit einer bestimmten Klasse zu einer Änderung aller Klassen in der gesamten Hierarchie.
Wenn es eine Schnittstelle gibt, müssen im obigen Beispiel nicht alle Klassen in der gesamten Hierarchiestruktur aufrechterhalten werden.
3. Die Schnittstelle hat Einsatz:
Jede Klasse in einer Hierarchie kann eine Schnittstelle implementieren, die alle Unterklassen dieser Klasse beeinflusst, jedoch keine Superklassen dieser Klasse beeinflusst. Diese Klasse muss die von dieser Schnittstelle angegebenen Methoden implementieren, und ihre Unterklassen können diese Methoden automatisch aus dieser Klasse erben und können sich natürlich auch dafür entscheiden, all diese Methoden oder einige von ihnen zu ersetzen. Zu diesem Zeitpunkt sind diese Unterklassen steckbar (und können mit diesem Schnittstellentyp geladen werden und alle Unterklassen übergeben und implementieren).
Die Schnittstelle bietet Interpolations- und Methodenaufrufe. Je größer die Skala des Softwaresystems ist, desto länger der Lebenszyklus. Die Schnittstelle sorgt für die Flexibilität und Skalierbarkeit des Softwaresystems und die Interpolationsfähigkeit.
Genau an der Grenzfläche hat Java -Einzelvererbung die Möglichkeit einer neuen Erweiterung (Ersatz von multipler Vererbung); 3. Typ Hierarchie -Java -Schnittstelle (und abstrakte Klassen) wird im Allgemeinen als Ausgangspunkt einer Typhierarchie verwendet.
Wenn eine Klasse bereits über einen großen Supertyp verfügt, kann die Klasse durch die Implementierung einer Schnittstelle einen weiteren kleinen Supertyp haben, der als Hybridtyp bezeichnet wird.
4. Klassifizierung der Java -Schnittstelle
1. Gewöhnliche Schnittstelle (einschließlich Methodendefinition) öffentliche Schnittstelle ActionListener {public abstract void ActionPerformed (ActionEvent Ereignis);}
2. Identifikationsschnittstelle (keine Methode und Attributdefinition) Die Identifikationsschnittstelle ist eine Schnittstelle ohne Methoden und Attribute. Die Identifikationsschnittstelle hat keine semantischen Anforderungen für die Klasse, die sie implementiert. Es zeigt nur an, dass die Klasse, die sie implementiert, zu einem bestimmten Typ gehört.
öffentliche Schnittstelle Serialisierbar {}; 3. Die konstante Schnittstelle bezieht sich auf die Verwendung einer Java -Schnittstelle, um einige Konstanten zu deklarieren, und dann verwenden die Klassen, die diese Schnittstelle implementieren, diese Konstanten.
public interface appconstants {public static final data_source_name = "test"; public static final user_name = "test"; public static final password = "test";}
5. Eigenschaften der Schnittstelle
1. Die Mitgliedsvariablen in der Java -Schnittstelle sind öffentlich, statisch und endgültig endgültig (alle können weggelassen werden) und müssen angezeigt und initialisiert werden, dh die Mitgliedsvariablen in der Schnittstelle sind Konstanten (Kappen, getrennt durch "_" zwischen Wörtern)
2. Die Methoden in der Java -Schnittstelle sind standardmäßig von öffentlichem und abstraktem Typ (alle können weggelassen werden). Ohne Methodenkörper können sie nicht instanziiert werden.
3. Die Java -Schnittstelle kann nur Mitgliedsvariablen öffentlicher, statischer, endgültiger Typen und Mitgliedermethoden der öffentlichen, abstrakten Typen enthalten.
4.. Es gibt keinen Konstruktor in der Schnittstelle und kann nicht instanziiert werden.
5. Eine Schnittstelle kann keine andere Schnittstelle implementieren, aber sie kann mehrere andere Schnittstellen erben.
6. Die Java -Schnittstelle muss ihre abstrakten Methoden durch Klassen implementieren.
7. Wenn eine Klasse eine bestimmte Java -Schnittstelle implementiert, muss sie alle abstrakten Methoden in der Schnittstelle implementieren. Andernfalls muss diese Klasse als abstrakte Klasse deklariert werden
8. Es ist nicht erlaubt, eine Instanz der Schnittstelle (Instanz) zu erstellen, sondern eine Referenzvariable des Schnittstellentyps definieren. Diese Referenzvariable bezieht sich auf eine Instanz der Klasse, die diese Schnittstelle implementiert.
9. Eine Klasse kann nur eine direkte übergeordnete Klasse erben, aber mehrere Schnittstellen implementieren und indirekt mehrere Vererbung implementieren.
S. Sowohl abstrakte Klassen als auch Schnittstellen befinden sich auf der oberen Schicht des Vererbungsbaums.
Ähnlichkeiten:
1. repräsentiert die Abstraktionsschicht des Systems. Wenn ein System eine Klasse an einem Vererbungsbaum verwendet, sollte es versuchen, die Referenzvariable als obere abstrakte Art des Vererbungsbaums zu deklarieren. Dies kann die Kopplung zwischen den beiden Systemen verbessern. 2. kann auch nicht instanziiert werden. 3. Beide enthalten abstrakte Methoden. Diese abstrakten Methoden werden verwendet, um zu beschreiben, welche Dienste das System anbieten kann, enthalten jedoch nicht die Unterschiede im Methodenkörper:
1. Der größte Unterschied besteht darin, dass die Java -Abstract -Klasse teilweise Implementierungen bestimmter Methoden liefern kann, während die Java -Schnittstelle dies nicht kann. Dies ist wahrscheinlich der einzige Vorteil der Java -abstrakten Klasse, aber dieser Vorteil ist sehr nützlich.
Sie können der abstrakten Klasse eine neue konkrete Methode hinzufügen, und alle Unterklassen erhalten diese Methode automatisch. Fügen Sie der Java -Schnittstelle jedoch eine neue Methode hinzu, und alle Klassen, die diese Schnittstelle implementieren, können nicht erfolgreich zusammengestellt werden, und Sie müssen die Implementierung dieser Methode zu jeder Klasse, die die Schnittstelle implementiert, manuell hinzufügen.
2. Die Implementierung einer abstrakten Klasse kann nur durch eine Unterklasse gegeben werden, dh die Implementierung kann nur in der von der abstrakten Klasse definierten hierarchischen hierarchischen Struktur enthalten sein; Daher wird die Wirksamkeit einer abstrakten Klasse als Typdefinitions -Tool stark reduziert.
Java -Schnittstelle. Jede Klasse, die die von einer Java -Schnittstelle angegebenen Methoden implementiert, kann den Typ dieser Schnittstelle haben, und eine Klasse kann alle mehrere Java -Schnittstellen implementieren, sodass diese Klasse mehrere Typen hat.
Wie oben zu sehen, ist die Java -Schnittstelle ein ideales Werkzeug zum Definieren von gemischten Typen. Gemischte Klassen zeigen, dass eine Klasse nicht nur das Verhalten eines bestimmten Primärtyps, sondern auch anderer sekundärer Verhaltensweisen hat.
3. Kombinieren Sie die jeweiligen Vorteile von abstrakten Klassen und Java -Schnittstellen in den Punkten 1 und 2. Es wird ein klassisches Designmuster ergeben:
Die Arbeit der Deklaration eines Typs wird von der Java -Schnittstelle noch durchgeführt, aber gleichzeitig wird eine Java -abstrakte Klasse angegeben und diese Schnittstelle implementiert. Andere konkrete Klassen, die ebenfalls zu diesem abstrakten Typ gehören, können diese Java -Schnittstelle implementieren oder diese abstrakte Klasse erben. Das heißt, in der Hierarchie befindet sich die Java -Schnittstelle oben und gefolgt von der abstrakten Klasse. Die größten Vorteile dieser beiden können maximiert werden. Dieser Modus ist der "Standardanpassungsmodus".
Dieses Muster wird in der Java -Sprach -API verwendet, und alles folgt bestimmte Namensspezifikationen: Zusammenfassung + Schnittstellenname.
7. Das Gesamtprinzip der Verwendung von Schnittstellen und abstrakten Klassen:
1. Verwenden Sie die Schnittstelle als Fenster für die Interaktion zwischen System und Außenwelt. Aus der Perspektive des externen Benutzer (ein anderes System) verspricht die Schnittstelle dem Benutzer, welche Dienste das System anbieten kann, und aus der Perspektive des Systems selbst, welche Dienste die Schnittstelle implementieren muss. Die Schnittstelle ist der abstrakte Typ auf höchster Ebene im System. Durch die Interaktion mit der Schnittstelle kann das Kopplungssystem A zwischen den beiden Systemen verbessert werden, um über System B zu interagieren. Dies bedeutet, dass bei System A auf System B die Referenzvariable die Referenzvariable als Grenzflächentyp in System B deklariert. Diese Referenzvariable bezieht sich auf die Instanz der Implementierungsklasse der Schnittstelle in System B.
öffentliche Schnittstelle B {}
öffentliche Klasse C implementiert B {}
öffentliche Klasse A {b a = new C (); }
2. Die Java -Schnittstelle selbst muss sehr stabil sein. Sobald die Java -Schnittstelle formuliert ist, darf sie nicht so gehen, wie sie passiert, sonst wirkt sie sich auf externe Benutzer und das System selbst aus. 3.. Verwenden Sie abstrakte Klassen, um die Erweiterungspunkte im System anzupassen, und abstrakte Klassen, um die teilweise Implementierung zu vervollständigen. Einige Funktionen müssen durch seine Unterklassen implementiert werden.
Der obige Artikel beschreibt die Konzepte, Klassifizierungen und Unterschiede aus abstrakten Kategorien von Java -Schnittstellen sind alle Inhalte, die ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.