Unterschied zwischen abstrakter Klasse und Schnittstelle in Java

Unterschied zwischen abstrakter Klasse und Schnittstelle in Java

Abstrakte Klasse und Schnittstelle werden hauptsächlich für die Abstraktion verwendet, unterscheiden sich jedoch sehr voneinander. Beide sind ein zentraler Bestandteil von Java, haben aber ihre eigene Anwendung verwendet. Während beide Begriffe gleichbedeutend sein können, können sie nicht synonym verwendet werden.

Es gibt signifikante Unterschiede zwischen den beiden. Während eine Schnittstellenmethode standardmäßig abstrakt ist, kann ein Abstract sowohl abstrakte als auch nicht abstrakte Methoden enthalten. Nun, seit Java 8 haben Schnittstellen auch Methodenimplementierungen und können sowohl statische als auch Standardmethoden in Java haben. Lassen Sie uns den Unterschied zwischen den beiden im Detail untersuchen.

Was ist eine abstrakte Klasse in Java?

Eine abstrakte Klasse in Java ist eine Klasse, die abstrakt deklariert wird - sie kann abstrakte Methoden enthalten oder auch nicht. Es ist einer Java -Schnittstelle ziemlich ähnlich, außer dass die Tatsache, dass sie eine Standardmethode -Implementierung enthalten kann. Wie bei der objektorientierten Programmierung wird die Abstraktion in Java unter Verwendung abstrakter Klassen und Schnittstellen erreicht. In Java bedeutet Abstraktion, die irrelevanten Details vom Benutzer zu verbergen, um sich nur auf die wesentlichen Details zu konzentrieren, um die Effizienz zu erhöhen, wodurch die Komplexität verringert wird. Das Schlüsselwort „Abstract“ wird verwendet, um eine abstrakte Klasse kurz vor dem Schlüsselwort der Klassen in der Klassenerklärung zu erstellen.

Eine abstrakte Klasse kann Abstraktionsmethoden (Methoden ohne Körper) enthalten oder auch nicht. Wenn eine Klasse jedoch mindestens eine Abstraktionsmethode hat, muss sie abstrakt deklariert werden. Nichtabstrakte Methoden können jedoch auch auch in einer abstrakten Klasse verwendet werden, sondern nur zur Implementierung des Standardverhaltens. Die Methoden in einer abstrakten Klasse können Zugriffsmodifikatoren wie privat, öffentlich, statisch und geschützt haben, abhängig von der Sichtbarkeitsebene. Eine abstrakte Klasse kann nicht instanziiert werden und liefert keine 100 -prozentige Abstraktion aufgrund der Tatsache, dass sie eine konkrete Methode haben kann.

Was ist eine Schnittstelle?

Eine Schnittstelle sieht jedoch aus wie eine Klasse, es ist nicht. Da Java nicht mehrere Erbschaften unterstützt, ist eine Schnittstelle manchmal ideal für die Bereitstellung von Basis für die Klassenhierarchie. Eine Schnittstelle ist eher eine Blaupause einer Klasse, die auch zur Abstraktion in Java verwendet wird. Es enthält abstrakte Methoden und statische Konstanten. In einfachen Worten ist eine Schnittstelle eine Sammlung abstrakter Methoden, mit der ein Verhalten angegeben ist, das die Klasse implementieren muss. Im Gegensatz zur abstrakten Klasse bietet eine Schnittstelle eine vollständige Abstraktion in Java. Es kann sowohl Methoden als auch Variablen genauso wie eine Klasse haben. Die in der Schnittstelle deklarierten Methoden sind jedoch standardmäßig abstrakt.

Unterschied zwischen abstrakter Klasse und Schnittstelle in Java

  1. "Multiple Vererbung" der abstrakten Klasse und Schnittstelle in Java - Trotz der Tatsache, dass sowohl die abstrakte Klasse als auch die Schnittstelle hauptsächlich für die Abstraktion verwendet werden, unterscheiden sie sich sehr voneinander. Während eine abstrakte Klasse eine Klasse ist, ist eine Schnittstelle eine Schnittstelle. Dies bedeutet, dass eine Schnittstelle nur eine andere Java -Schnittstelle erweitern kann, eine abstrakte Klasse kann mehrere Erbschaften in Java implementieren. Nun, Java unterstützt nicht mehrere Erbschaften, aber man kann mehrere Erbschaften in Java implementieren.
  2. „Methodentyp“ der abstrakten Klasse und Schnittstelle in Java - Der zweite Hauptunterschied zwischen beiden besteht darin, dass eine Schnittstelle zwar nur abstrakte Methoden haben kann, aber eine abstrakte Klasse sowohl abstrakte als auch nicht abstrakte Methoden haben kann. Seit Java 8 kann eine Schnittstelle jedoch auch Standard- und statische Methoden haben.
  3. "Zugriffsmodifikatoren" der abstrakten Klasse und Schnittstelle in Java - Eine abstrakte Klasse kann öffentliche, private und geschützte Zugriffsmodifikatoren haben. Methoden einer Schnittstelle sind jedoch implizit öffentlich und abstrakt. Sie können keinen anderen Zugriffsmodifikator mit Schnittstellenmethoden verwenden.
  4. „Implementierung“ der abstrakten Klasse und Schnittstelle in Java - Eine abstrakte Klasse kann die Implementierung einer Schnittstelle liefern. Eine Schnittstelle hingegen kann die Implementierung einer abstrakten Klasse nicht bereitstellen.
  5. „Schlüsselwort“ der abstrakten Klasse und Schnittstelle in Java- Während das Schlüsselwort „abstrakt“ verwendet wird, um eine abstrakte Klassenmethode als abstrakt zu deklarieren, sind Schnittstellen jedoch völlig eine andere Geschichte. Sie können nur öffentliche, statische endgültige Konstanten und Methodenerklärungen haben.
  6. "Verwendung" von abstrakter Klasse und Schnittstelle in Java - Während eine Schnittstelle ideal für die Typdeklaration ist, eignet sich eine abstrakte Klasse am besten für die Wiederverwendbarkeit und Evolutionsperspektive von Code. Eine Schnittstelle sieht aus wie eine Klasse, aber es ist keine Klasse.
  7. "Zuverlässigkeit" der abstrakten Klasse und Schnittstelle in Java- Ein weiterer wichtiger Unterschied zwischen einer abstrakten Klasse und einer Schnittstelle besteht darin, dass erstere etwas schneller als letzteres ist, da normalerweise eine Suche an einer Schnittstelle beteiligt ist.
  8. "Finale Variablen" der abstrakten Klasse und Schnittstelle in Java - Die in einer Grenzfläche deklarierten Variablen sind standardmäßig endgültig, während eine abstrakte Klasse nicht-fele-Variablen enthalten kann oder nicht.

Abstract Class vs Interface in Java: Vergleichstabelle

Abstrakte Klasse Schnittstelle
Das abstrakte Schlüsselwort wird zum Erstellen einer abstrakten Klasse verwendet und kann mit Methoden verwendet werden. Das Schnittstellenschlüsselwort wird zum Erstellen einer Schnittstelle verwendet, kann jedoch nicht mit Methoden verwendet werden.
Eine Klasse kann nur eine abstrakte Klasse erweitern. Eine Klasse kann mehr als eine Schnittstelle implementieren.
Eine abstrakte Klasse kann sowohl abstrakte als auch nicht abstrakte Methoden haben. Eine Schnittstelle kann nur abstrakte Methoden haben.
Variablen sind standardmäßig nicht endgültig. Es kann nicht-finale Variablen enthalten. Variablen sind standardmäßig in einer Schnittstelle endgültig endgültig.
Eine abstrakte Klasse kann die Implementierung einer Schnittstelle liefern. Eine Schnittstelle kann nicht die Implementierung einer abstrakten Klasse liefern.
Es kann Methoden mit Implementierungen haben. Es bietet absolute Abstraktion und kann keine Methodenimplementierungen haben.
Es kann öffentliche, private, statische und geschützte Zugriffsmodifikatoren haben. Die Methoden sind in der Java -Schnittstelle implizit öffentlich und abstrakt.
Es unterstützt nicht mehrere Erbschaften. Es unterstützt mehrere Erbschaften.
Es ist ideal für die Wiederverwendung und Evolutionsperspektive für Code. Es ist ideal für die Typdeklaration.

Zusammenfassungspunkte zur abstrakten Klasse und Schnittstelle in Java

Für die Abstraktion werden sowohl abstrakte Klasse als auch Schnittstelle verwendet. Sie haben jedoch einen angemessenen Anteil an Unterschieden. Der Hauptunterschied zwischen beiden wird durch Abstraktionsmethoden angetrieben. Während erstere möglicherweise abstrakte Methoden haben oder nicht, ist letzteres implizit abstrakt. Eine abstrakte Klasse kann sowohl abstrakte als auch nicht abstrakte Methoden haben. Eine Schnittstelle hingegen kann nur abstrakte Methoden haben, daher können sie keine Implementierung haben, was einfach bedeutet. Eine abstrakte Klasse kann nicht instanziiert werden, was die Erstellung eines Objekts verbietet. Eine Schnittstelle hingegen mag wie eine Klasse aussehen, aber es ist nicht.