(1) Sowohl abstrakte Klassen als auch Schnittstellen können abstrakte Methoden haben.
(2) Schnittstellen können nur Konstanten und keine Variablen haben, während abstrakte Klassen sowohl Konstanten als auch Variablen haben können.
(3) Abstrakte Klassen können auch nicht abstrakte Methoden haben, Schnittstellen jedoch nicht.
Beim Entwerfen eines Programms sollten Sie anhand einer spezifischen Analyse entscheiden, ob abstrakte Klassen oder Schnittstellen verwendet werden sollen. Abstrakte Klassen stellen nicht nur wichtige abstrakte Methoden bereit, die von Unterklassen überschrieben werden müssen, sondern stellen auch Variablen und nicht abstrakte Methoden bereit, die Unterklassen erben können.
Wenn ein bestimmtes Problem beispielsweise durch Vererbung besser gelöst werden muss: Zusätzlich zum Überschreiben der abstrakten Methode der übergeordneten Klasse muss die Unterklasse auch einige Variablen erben oder einige wichtige nicht abstrakte Methoden von der übergeordneten Klasse erben Erwägen Sie die Verwendung abstrakter Art. Wenn für ein bestimmtes Problem keine Vererbung erforderlich ist, sondern nur mehrere Klassen erforderlich sind, um die Implementierungsdetails einiger wichtiger abstrakter Methoden bereitzustellen, können Sie die Verwendung von Schnittstellen in Betracht ziehen.
Hinweis : Die JDK1.8-Schnittstelle unterstützt statische Methoden und Standardmethoden.
1) Schnittstellen können nicht zum Instanziieren von Objekten verwendet werden.
2) Die Schnittstelle hat keine Konstruktormethode.
3) Alle Methoden in der Schnittstelle müssen abstrakte Methoden sein.
4) Schnittstellen dürfen keine Mitgliedsvariablen enthalten, mit Ausnahme statischer und endgültiger Variablen.
5) Die Schnittstelle wird nicht von der Klasse geerbt, sondern von der Klasse implementiert.
6) Die Schnittstelle unterstützt Mehrfachvererbung.
Die Standardmethode bedeutet, dass die Schnittstelle Implementierungsmethoden haben kann und keine Implementierungsklasse zum Implementieren ihrer Methoden benötigt. Sie müssen lediglich das Standardschlüsselwort vor dem Methodennamen hinzufügen, um die Standardmethode zu implementieren. Standardmethoden bieten eine Möglichkeit, eine Schnittstelle zu erweitern, ohne vorhandenen Code zu beschädigen.
(1) Eine Schnittstelle kann mehrere Standardmethoden und statische Methoden haben.
(2) Die Standardmethode wird über die Instanz aufgerufen, und die statische Methode wird über den Schnittstellennamen aufgerufen.
(3) Das Standardschlüsselwort kann nur in Schnittstellen verwendet werden.
(4) Standardmethoden können vererbt werden und mehrere Schnittstellen definieren mehrere gleiche Standardmethoden. Die Implementierungsklasse muss die Standardmethoden überschreiben, andernfalls wird ein Fehler gemeldet.
(5) Statische Methoden können nicht vererbt und überschrieben werden, sodass sie nur von der spezifischen Schnittstelle aufgerufen werden können.
Hinweis : Nach JDK 1.9 dürfen Methoden als privat definiert werden, sodass bestimmte wiederverwendete Codes die Methoden nicht offenlegen.