Heim >Java >JavaErste Schritte >Was sind die Unterschiede zwischen abstrakten Java-Klassen und -Schnittstellen?
1. Abstrakte Klasse
In Java wird eine durch das Schlüsselwort abstract geänderte Klasse als abstrakte Klasse bezeichnet. Die durch Abstract geänderte Methode wird als abstrakte Methode bezeichnet. Eine abstrakte Methode verfügt nur über eine Methodendeklaration und keinen Methodenkörper.
Abstrakte Klassen haben die folgenden Eigenschaften:
1. Abstrakte Klassen können nicht instanziiert, sondern nur vererbt werden.
2. Eine Klasse, die eine abstrakte Methode enthält, muss eine abstrakte Klasse sein, aber eine abstrakte Klasse muss nicht unbedingt eine abstrakte Methode enthalten (eine abstrakte Klasse kann gewöhnliche Methoden enthalten).
3. Der Berechtigungsmodifikator einer abstrakten Methode kann nur öffentlich oder geschützt sein und ist standardmäßig öffentlich.
4. Wenn eine Klasse von einer abstrakten Klasse erbt, muss die Unterklasse die abstrakte Methode der abstrakten Klasse implementieren. Wenn die Unterklasse nicht die abstrakte Methode der übergeordneten Klasse implementiert, muss die Unterklasse als definiert werden abstrakte Klasse.
5. Abstrakte Klassen können Attribute, Methoden und Konstruktoren enthalten, aber Konstruktoren können nicht zum Instanziieren von Objekten verwendet werden und können nur von Unterklassen aufgerufen werden.
2. Schnittstelle
Schnittstelle kann als spezielle Klasse betrachtet werden, die nur mit dem Schlüsselwort interface geändert werden kann. Die Schnittstelle wird für den Aufruf durch andere bereitgestellt. Schnittstellen in Java weisen die folgenden Merkmale auf:
1. Schnittstellen können implizit als öffentliche statische Endvariablen und Methoden implizit als öffentliche Zusammenfassung (vor JDK 1.8) bezeichnet werden 🎜>2. Die Schnittstelle unterstützt Mehrfachvererbung, das heißt, eine Schnittstelle kann mehrere Schnittstellen erweitern, was indirekt das Problem löst, dass Klassen in Java nicht mehrere Schnittstellen erben können Zeit Mehrere Schnittstellen. Wenn eine Klasse eine Schnittstelle implementiert, muss sie die abstrakte Methode in der Schnittstelle implementieren, andernfalls muss die Klasse als abstrakte Klasse definiert werden.
4 Den Schnittstellen wurden zwei neue Funktionen hinzugefügt 1.8:
(1) Standardmethode: JDK 1.8 ermöglicht das Hinzufügen nicht-abstrakter Methodenimplementierungen zu Schnittstellen, sie müssen jedoch mit dem Standardschlüsselwort geändert werden. Methoden, die den Standardwert definieren, müssen nicht durch Implementierungsunterklassen implementiert werden. Es kann jedoch nur von Objekten aufgerufen werden, die die Unterklasse implementieren. Wenn die Unterklasse mehrere Schnittstellen implementiert und diese Schnittstellen dieselbe Standardmethode enthalten, muss die Unterklasse die Standardmethode überschreiben.
(2) Statische Methode: Mit JDK 1.8 können Sie das Schlüsselwort static verwenden, um eine Methode zu ändern und eine Implementierung bereitzustellen, die als statische Schnittstellenmethode bezeichnet wird. Statische Methoden der Schnittstelle können nur über die Schnittstelle aufgerufen werden (Schnittstellenname. Name der statischen Methode).
5. In JDK 1.9 wurde die Schnittstelle erneut erweitert, um private Methoden und private statische Methoden zu implementieren. Da Methoden in Schnittstellen in JDK 1.8 implementiert werden können, können wir die Methoden als privat definieren, wenn wir nicht möchten, dass die implementierten Methoden nach außen sichtbar sind.
3. Der Unterschied zwischen Schnittstellen und abstrakten Klassen1. Abstrakte Klassen können gewöhnliche Methoden enthalten, Schnittstellen können jedoch nur öffentliche abstrakte Methoden enthalten (vor JDK 1.8); 2. Es gibt keine Zugriffsbeschränkungen für Mitgliedsvariablen in abstrakten Klassen, aber Variablen in Schnittstellen können nur durch öffentliches statisches Finale geändert werden.
3 Eine Schnittstelle kann mehrere Schnittstellen erben Eine Klasse kann nur eine übergeordnete Klasse haben, und eine Klasse kann mehrere Schnittstellen implementieren.
4 Eine abstrakte Klasse ist eine Abstraktion einer Art von Sache, und eine Schnittstelle ist eine Abstraktion des Verhaltens. Eine Klasse, die eine abstrakte Klasse erbt, stellt die „Ist es“-Beziehung dar, während eine Klasse, die eine Schnittstelle implementiert, die „Ist es“-Beziehung darstellt.
php Chinesische Website, eine große Anzahl kostenloser
Java-Einführungs-Tutorials, willkommen zum Online-Lernen!
Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen abstrakten Java-Klassen und -Schnittstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!