In diesem Artikel wird der Unterschied zwischen Schnittstellen und abstrakten Klassen beim Java-Lernen analysiert, der für Anfänger von entscheidender Bedeutung ist, um gründlich zu lernen und die Konzepte der Java-Programmierung genau zu verstehen. Einzelheiten sind wie folgt:
Java-Anfänger stellen oft Fragen wie: Was ist der Unterschied zwischen Schnittstellen und abstrakten Klassen? Auf welcher Grundlage entscheiden Sie sich für die Verwendung von Schnittstellen und abstrakten Klassen?
Die Konzepte von Schnittstellen und abstrakten Klassen sind unterschiedlich. Die Schnittstelle ist die Abstraktion von Aktionen und die abstrakte Klasse ist die Abstraktion der Quelle.
Die abstrakte Klasse stellt dar, was dieses Objekt ist. Die Schnittstelle stellt dar, was dieses Objekt tun kann. Zum Beispiel sind Männer und Frauen, diese beiden Klassen (wenn sie Klassen sind ...), ihre abstrakte Klasse sind Menschen. Erklären Sie, dass es sich bei allen um Menschen handelt.
Menschen können essen, und Hunde können auch essen. Sie können „Essen“ als Schnittstelle definieren und es dann von diesen Klassen implementieren lassen.
Daher kann eine Klasse in Hochsprachen nur eine Klasse (abstrakte Klasse) erben (so wie eine Person nicht gleichzeitig ein Lebewesen und ein Nichtlebendes sein kann), aber sie kann mehrere Schnittstellen implementieren (Essschnittstelle). , Gehschnittstelle).
Der erste Punkt. Eine Schnittstelle ist eine Variante einer abstrakten Klasse und alle Methoden in der Schnittstelle sind abstrakt. Eine abstrakte Klasse ist eine Klasse, die die Existenz einer Methode deklariert, ohne sie zu implementieren.
Der zweite Punkt. Schnittstellen können vererbt werden, abstrakte Klassen jedoch nicht (Hinweis: Der ursprüngliche Autor hat hier einen Fehler gemacht. Abstrakte Klassen können vererbt werden. Wenn alle Unterklassen die Methoden in der abstrakten Klasse implementieren, ist die Unterklasse keine abstrakte Klasse, andernfalls eine von ihnen wurde nicht implementiert. Dann ist die Unterklasse auch eine abstrakte Klasse.
Der dritte Punkt. Schnittstellendefinitionsmethoden können nicht implementiert werden, während abstrakte Klassen einige Methoden implementieren können.
Der vierte Punkt. Der grundlegende Datentyp in der Schnittstelle ist statisch, das abstrakte Bild jedoch nicht.
Wenn Sie sich auf das Wesentliche einer Sache konzentrieren, verwenden Sie abstrakte Klassen. Wenn Sie sich auf eine Operation konzentrieren, verwenden Sie Schnittstellen.
Die Funktionalität abstrakter Klassen geht weit über die von Schnittstellen hinaus, die Kosten für die Definition abstrakter Klassen sind jedoch hoch . Denn in Hochsprachen (und im Hinblick auf das tatsächliche Design) kann jede Klasse nur eine Klasse erben. In dieser Klasse müssen Sie alle gemeinsamen Merkmale aller ihrer Unterklassen erben oder ausschreiben. Obwohl die Schnittstelle in ihrer Funktion deutlich schwächer sein wird, handelt es sich lediglich um eine Beschreibung einer Aktion. Und Sie können mehrere Schnittstellen gleichzeitig in einer Klasse implementieren. Der Schwierigkeitsgrad wird während der Entwurfsphase reduziert.