Unterschiede zwischen Java Interface und Abstract Class

Eine Schnittstelle gibt an, was eine Klasse tun muss, nicht aber wie. Es ist im Grunde eine Blaupause für die Klasse. Die in einer Schnittstelle deklarierten Variablen sind standardmäßig öffentlich, statisch und final. Eine Klasse, die mit dem Schlüsselwort „abstract“ deklariert wurde, wird als abstrakte Klasse bezeichnet. Eine Klasse, die von der Klasse Abstract abgeleitet wurde, muss alle Methoden definieren, die in einer abstrakten Klasse als abstrakt deklariert wurden.

Was ist eine Schnittstelle?

Eine Schnittstelle ist wie eine Klasse, kann jedoch keine Methoden und Variablen als Klasse haben, sondern in einer Schnittstelle deklarierte Methoden sind standardmäßig abstrakt. Ein Interface wird verwendet, um eine vollständige Abstraktion bereitzustellen, da Methoden in Interfaces keinen Body haben. Sie müssen daher von der Klasse implementiert werden, bevor Sie versuchen, auf sie zuzugreifen. Im Allgemeinen muss eine Klasse, die eine Schnittstelle implementiert, alle in einer Schnittstelle deklarierten Methoden definieren. Ist dies nicht der Fall, muss die Klasse als abstrakt deklariert werden. Wir können die Schnittstelle nicht auf mehr als eine Klasse erweitern, da Java dies nicht zulässt. Um eine Schnittstelle zu deklarieren, müssen wir das Schlüsselwort interface verwenden und um die Schnittstelle zu implementieren, müssen wir das Schlüsselwort implements verwenden.

Was ist die Zusammenfassung?

Eine Klasse, die mit dem Schlüsselwort "abstract" deklariert wird, wird als abstrakte Klasse bezeichnet. Eine Abstract-Klasse kann im Gegensatz zu einer normalen Klasse abstrakte (Methode ohne Körper) und konkrete Methoden (Methode mit Körper) haben. Abstrakte Klassen können nicht instanziiert werden, dh wir können kein Objekt dafür erstellen, sondern können Referenzen auf abstrakte Klassen haben, indem wir eine weitere Klasse erstellen, die die abstrakte Klasse erweitert und die Implementierung von Methoden ermöglicht. Wir können ein Objekt eines Kindes (das neu erstellt wurde) verwenden, um abstrakte und normale Methoden aufzurufen. Es kann Konstruktoren haben und die abstrakte Klasse wird aufgerufen, wenn eine geerbte Klasseninstanz erstellt wird. In Java können wir eine abstrakte Klasse ohne abstraktes Schlüsselwort haben, aber diese Klassen können nicht instanziiert, nur geerbt werden und können auch endgültige Methoden haben.

Head to Head Vergleich zwischen Java Interface und Abstract Class (Infografik)

Nachfolgend finden Sie die Top 9 Vergleiche zwischen Java Interface und Abstract Class

Hauptunterschiede zwischen Java Interface und Abstract Class

Sowohl Java Interface als auch Abstract Class sind auf dem Markt sehr beliebt. Lassen Sie uns einige der Hauptunterschiede zwischen Java Interface und Abstract Class diskutieren:

  • Eine Schnittstelle kann verwendet werden, um mehrere Vererbungen und lose Kopplungen zu erreichen, die wir mit der abstrakten Klasse nicht erreichen können.
  • Schnittstelle, die verwendet wird, um eine vollständige Abstraktion zu erzielen, wohingegen eine abstrakte Klasse eine teilweise Abstraktion erzielen kann.
  • Eine abstrakte Klasse erweitert jeweils nur eine normale Klasse oder abstrakte Klasse, während eine Schnittstelle eine beliebige Anzahl von Schnittstellen gleichzeitig erweitern kann.
  • Eine abstrakte Klasse erweitert eine andere abstrakte oder normale Klasse, während eine Schnittstelle nur eine andere Java-Schnittstelle erweitern kann.
  • In einer abstrakten Klasse müssen wir Methoden mit dem Schlüsselwort "abstract" deklarieren, während wir in der Schnittstelle Methoden mit oder ohne dem Schlüsselwort "abstract" deklarieren können.
  • Eine Schnittstelle kann nur abstrakte Methoden haben, während eine abstrakte Klasse sowohl abstrakte als auch normale Klassen haben kann.
  • Eine abstrakte Klasse kann verschiedene Variablen wie statisch, endgültig, nicht endgültig, nicht statisch, öffentlich, privat usw. haben, wohingegen Interface nur öffentliche, statische und endgültige Variablen haben kann.
  • Eine abstrakte Klasse und ihre Methoden können mit dem Schlüsselwort "abstract" erstellt werden, während das Schlüsselwort "interface" zum Erstellen der Schnittstelle, jedoch nicht der Methoden verwendet wird.
  • Eine abstrakte Klasse kann Konstruktoren haben, während die Schnittstelle keinen Konstruktor hat.
  • Eine abstrakte Klasse wird zum Definieren von Vertrags- und Methodenimplementierungen für Unterklassen verwendet, während eine Schnittstelle zum Definieren eines Vertrags für Unterklassen verwendet wird.
  • Eine Schnittstelle kann nur andere Java-Schnittstellen erweitern, während eine abstrakte Klasse auch andere Klassen erweitern und die Schnittstelle implementieren kann.
  • Eine Klasse, die eine abstrakte Klasse mit dem Schlüsselwort extend erweitert, muss alle in der abstrakten Klasse deklarierten Methoden implementieren, es sei denn, eine Klasse ist auch eine abstrakte Klasse, während eine Klasse, die die Schnittstelle mit dem Schlüsselwort interface implementiert, auch eine Implementierung für alle in der Schnittstelle deklarierten Methoden bereitstellt.

Vergleichstabelle Java Interface vs Abstract Class

Es folgt die Vergleichstabelle zwischen Java Interface und Abstract Class

Die Vergleichsbasis zwischen Java Interface und Abstract ClassAbstrakte KlasseJava-Schnittstelle
MethodentypEine Abstract-Klasse kann sowohl abstrakte (Methoden ohne Körper) als auch nicht abstrakte (Methoden mit Körper) Methoden enthaltenIn Interface können nur abstrakte Methoden verwendet werden. Ab Java 8 kann Interface auch statische und Standardmethoden haben
SyntaxEine Abstract-Klasse kann wie folgt deklariert werden:
öffentliche abstrakte Klassenschule (Öffentliche abstrakte nichtige Klassen ();
public abstract void strength ();)
Eine Schnittstelle kann wie folgt deklariert werden:
Form der öffentlichen Schnittstelle (Void draw_rect (); Void draw_square ();)
EndvariableEine abstrakte Klasse kann endgültige und nicht endgültige Variablen haben.Während die Schnittstelle nur endgültige Variablen haben kann, sind die Variablen in der Schnittstelle standardmäßig endgültig.
ImplementierungEine abstrakte Klasse kann die Implementierung aller abstrakten Methoden in der Schnittstelle bereitstellen.Während in der Schnittstelle keine abstrakte Klasse implementiert werden kann.
VariablentypEine abstrakte Klasse kann alle Arten von Variablen enthalten, dh endgültige, nicht endgültige, statische, nicht statische, private, öffentliche usw.Während die Schnittstelle nur öffentliche, statische und endgültige Variablen haben kann.
Datenelemente BarrierefreiheitEine abstrakte Klasse kann Klassenmitglieder als privat, geschützt, öffentlich usw. haben.Eine Schnittstelle kann nur öffentliche Klassenmitglieder enthalten, da Schnittstellendatenmitglieder standardmäßig öffentlich sind.
Vererbung gegen AbstraktionEine abstrakte Klasse kann mithilfe des Schlüsselworts "extend" erweitert werden und muss die Implementierung aller deklarierten Methoden in der übergeordneten Klasse oder der abstrakten Klasse bereitstellenEine Schnittstelle kann mit dem Schlüsselwort "interface" implementiert werden und muss die Implementierung für alle in der Schnittstelle deklarierten Methoden bereitstellen
Multiple ImplementierungEine abstrakte Klasse kann eine andere Java-Klasse erweitern, die mehrere Schnittstellen implementiertEine Schnittstelle kann nur eine andere Schnittstelle erweitern.
Wann zu verwendenEine abstrakte Klasse muss verwendet werden, wenn einige Klassen einige Codezeilen gemeinsam nutzen müssen. Dann können wir diesen Code in eine abstrakte Klasse einfügen und um alle zugehörigen Klassen erweitern.Eine Schnittstelle kann verwendet werden, wenn mehrere Vererbungen und eine vollständige Abstraktion erforderlich sind, indem alle in einer Schnittstelle deklarierten Methoden von einer Klasse implementiert werden, die die Schnittstelle implementiert.

Fazit - Java Interface vs. Abstract Class

Schließlich gibt es einen Überblick über den Unterschied zwischen Java Interface und Abstract Class. Ich hoffe, dass Sie diese Konzepte von Java Interface vs Abstract Class besser verstehen. Basierend auf unseren Anforderungen können wir sowohl Java Interface als auch Abstract Class zusammen verwenden, nur Interface und auch nur Abstract Class. Die Verwendung von Schnittstellen und abstrakter Klasse zusammen ist jedoch der beste Ansatz für das Entwerfen. Wenn eine Klasse Code gemeinsam nutzen muss, können wir diesen Code in die abstrakte Klasse einfügen. Wenn ein Status eines Objekts erforderlich ist, können wir nicht statische oder nicht endgültige Felder definieren und dann eine abstrakte Klasse verwenden. Wir können Interface verwenden, wenn wir vollständige Abstraktion, Mehrfachvererbung und lose Kopplung benötigen.

Empfohlener Artikel

Dies war eine Anleitung zu den wichtigsten Unterschieden zwischen Java Interface und Abstract Class. Hier werden auch die Hauptunterschiede zwischen Java-Schnittstelle und abstrakter Klasse mit Infografiken und die Vergleichstabelle erläutert. Sie können auch einen Blick auf die folgenden Artikel werfen -

  1. Wie nützlich sind Fragen und Antworten zum C # -Interview?
  2. 8 Nützlicher Vergleich-HTML5 vs Flash
  3. Java vs C # - 8 Wichtige Unterschiede
  4. Ruby vs Node
  5. HTML5 vs JavaScript Vergleich
  6. ArrayList vs Java Vector