Unterschied zwischen Anbaugeräten und Erweiterungen

Implementiert vs Erweitert

Implementierungen und Erweiterungen sind zwei Schlüsselwörter, die in der Java-Programmiersprache gefunden werden und die eine Möglichkeit bieten, zusätzliche Funktionen auf eine neue Klasse zu übertragen. Das Implements-Schlüsselwort wird explizit zum Implementieren einer Schnittstelle verwendet, während das Extends-Schlüsselwort zum Erben von einer (Super-) Klasse verwendet wird. Bitte beachten Sie, dass die Konzepte der Vererbung und der Schnittstellen in den meisten anderen objektorientierten Programmiersprachen wie C # und VB.NET vorhanden sind, jedoch unterschiedliche Syntax oder Schlüsselwörter für die Anwendung dieser Konzepte bieten. In diesem Artikel werden nur in Java definierte Schlüsselwörter implementiert und erweitert.

Erweitert

Das Schlüsselwort Extends wird verwendet, um das Konzept der Vererbung in der Java-Programmiersprache zu implementieren. Vererbung ermöglicht im Wesentlichen die Wiederverwendung von Code, indem die Erweiterung der Eigenschaften und des Verhaltens einer vorhandenen Klasse um eine neu definierte Klasse ermöglicht wird. Wenn eine neue Unterklasse (oder abgeleitete Klasse) eine Superklasse (oder übergeordnete Klasse) erweitert, erbt diese Unterklasse alle Attribute und Methoden der Superklasse. Die Unterklasse kann optional das Verhalten überschreiben (neue oder erweiterte Funktionalität für Methoden bereitstellen), das von der übergeordneten Klasse geerbt wird. Eine Unterklasse kann nicht mehrere Superklassen in Java erweitern. Daher können Sie keine Erweiterungen für die Mehrfachvererbung verwenden. Um eine Mehrfachvererbung zu erhalten, müssen Sie die unten beschriebenen Schnittstellen verwenden.

Implementiert

Das Schlüsselwort implements in der Java-Programmiersprache wird zum Implementieren einer Schnittstelle durch eine Klasse verwendet. Eine Schnittstelle in Java ist ein abstrakter Typ, der verwendet wird, um einen Vertrag anzugeben, der von Klassen implementiert werden soll, die diese Schnittstelle implementieren. Normalerweise enthält eine Schnittstelle nur Methodensignaturen und Konstantendeklarationen. Jede Schnittstelle, die eine bestimmte Schnittstelle implementiert, sollte alle in der Schnittstelle definierten Methoden implementieren oder als abstrakte Klasse deklariert werden. In Java kann der Typ einer Objektreferenz als Schnittstellentyp definiert werden. Dieses Objekt muss jedoch entweder null sein oder sollte ein Objekt einer Klasse enthalten, die diese bestimmte Schnittstelle implementiert. Mit dem Schlüsselwort Implements in Java können Sie mehrere Schnittstellen in einer einzigen Klasse implementieren. Eine Schnittstelle kann keine andere Schnittstelle implementieren. Eine Schnittstelle kann jedoch eine Klasse erweitern.

Unterschied zwischen Implementierungen und Erweiterungen

Obwohl Implements und Extends zwei Schlüsselwörter sind, die einen Mechanismus zum Erben von Attributen und Verhalten an eine Klasse in der Java-Programmiersprache bereitstellen, werden sie zu zwei unterschiedlichen Zwecken verwendet. Das Implements-Schlüsselwort wird für eine Klasse verwendet, um eine bestimmte Schnittstelle zu implementieren, während das Extends-Schlüsselwort für eine Unterklasse verwendet wird, um sich von einer übergeordneten Klasse zu erweitern. Wenn eine Klasse eine Schnittstelle implementiert, muss diese Klasse alle in der Schnittstelle definierten Methoden implementieren. Wenn jedoch eine Unterklasse eine Oberklasse erweitert, kann sie die in der übergeordneten Klasse enthaltenen Methoden überschreiben. Ein weiterer wesentlicher Unterschied zwischen Implements und Extends besteht darin, dass eine Klasse mehrere Schnittstellen implementieren kann, jedoch nur eine Superklasse in Java umfassen kann. Im Allgemeinen wird die Verwendung von Implementierungen (Schnittstellen) im Vergleich zur Verwendung von Erweiterungen (Vererbung) aus verschiedenen Gründen als günstiger angesehen, z. B. aufgrund der höheren Flexibilität und der Möglichkeit, die Kopplung zu minimieren. Daher wird in der Praxis die Programmierung einer Schnittstelle gegenüber der Erweiterung von Basisklassen bevorzugt.