Unterschiede zwischen abstrakter Klasse und Interface in Java Unterschied zwischen

Anonim

Abstrakte Klasse vs Schnittstelle in Java

Um die Unterschiede zwischen der abstrakten Klasse und der Schnittstelle in Java zu verstehen, ist es wichtig, zunächst jede dieser Komponenten unabhängig voneinander zu verstehen. Die abstrakte Klasse in Java wird bei der Deklaration von Unterklassen mit einer Reihe gemeinsamer Merkmale verwendet. Die allgemeine Verwendung der abstrakten Klasse ist eine Superklasse anderer Klassen, die es tatsächlich ermöglicht, die abstrakte Klasse zu erweitern. Ein abstract-Schlüsselwort wird in der Deklaration einer abstrakten Klasse verwendet. Genau wie jede andere Klasse hat die abstrakte Klasse Felder, die Methoden und Eigenschaften beschreiben, die die Klasse ausführen kann. Durch die bloße Deklaration einer abstrakten Klasse kann die Klasse nicht initiiert werden

Eine Java-Schnittstelle kann einem Protokoll gleichgesetzt werden. Es stellt ein voreingestelltes und vereinbartes Verhalten dar, das eine Erleichterung der Interaktion von nicht verwandten Objekten ermöglicht. Abhängig vom Benutzer hält die Schnittstelle den Schlüssel für verschiedene Aktionen, die implementiert werden. Die Schnittstelle dient somit als Bindeglied zwischen Hersteller und Verbraucher. Schnittstellen in Java sind somit eine Gruppe von Methoden, die leere Körper enthalten, die konstante Deklarationen haben können. Wenn eine Klasse der Java-Schnittstelle zugänglich gemacht wird, bedeutet dies, dass das von der Klasse erwartete Verhalten die Implementierung aller Methoden der Schnittstelle ist.

Unterschiede

Zunächst einmal erlaubt eine abstrakte Klasse Felder, die nicht statisch oder final sind, im Gegensatz zu den statischen und finalen Feldern, die in Interfaces verwendet werden. Schnittstellen können keinen Implementierungscode enthalten, und in der abstrakten Klasse kann Implementierungscode verwendet werden. Die Implementierungscodes, die in der abstrakten Klasse ausgerollt werden, können einige oder alle der implementierten Methoden haben. Standardmäßig sind alle Methoden der Schnittstelle "abstrakt". "

Sichtbarkeit ist auch für Methoden oder Mitglieder einer abstrakten Klasse möglich, die variieren kann, wie öffentlich, geschützt, privat oder keine. Die Sichtbarkeit der Schnittstelle kann andererseits nur auf eine Sichtbarkeitsmethode voreingestellt werden, die "öffentlich" ist. '"

Eine abstrakte Klasse erbt automatisch die Objektklasse. Dies bedeutet, dass Methoden wie clone () und equals () enthalten sind. In einer Schnittstelle ist keine Vererbung der Objektklasse möglich. Danach kann die abstrakte Klasse einen Konstruktor haben, aber eine Schnittstelle kann keinen haben.

Die Schnittstelle in Java hat auch eine sehr wichtige Funktion bei der Implementierung mehrerer Vererbungen, da eine Klasse nur eine Superklasse haben kann. Obwohl nur eine Superklasse vorhanden sein kann, kann sie in einer beliebigen Anzahl von Schnittstellen implementiert werden. Es ist nicht möglich, mehrere Vererbungen in einer abstrakten Klasse zu haben.

In der Leistung neigen Schnittstellen dazu, langsamer zu sein, im Gegensatz zur abstrakten Klasse, hauptsächlich aufgrund der zusätzlichen Richtung, die entsprechende Methode in einer Klasse zu finden. Der Unterschied ist jedoch aufgrund der modernen Java Virtual Machines, die ständig aktualisiert werden, langsamer geworden.

Wenn Sie eine Methode in einer Schnittstelle hinzufügen, müssen Sie alle implementierenden Klassen aufspüren, die die spezifische Schnittstelle implementieren. Alternativ können Sie die Schnittstelle erweitern, um zusätzliche Methoden zu ermöglichen. Wenn Sie sich mit einer abstrakten Klasse beschäftigen, müssen Sie nur die Standardimplementierung der Methode hinzufügen, und der Code funktioniert weiterhin. Insofern Unterschiede zwischen abstrakten Klassen und Schnittstellen bestehen, ist es wichtig zu beachten, dass sie keine Rivalen sind, aber die hier genannten Unterschiede ergänzen sich gegenseitig.

Zusammenfassung

  1. Abstrakte Klassenfelder sind nicht statisch oder final im Gegensatz zu Interfaces mit statischen und finalen Tabellen.

  2. In Schnittstellen kann kein Implementierungscode verwendet werden, während er in der abstrakten Klasse verwendet werden kann.

  3. Die Sichtbarkeit der Benutzeroberfläche kann nur öffentlich sein, während die Sichtbarkeit der abstrakten Klassen variieren kann.

  4. Eine abstrakte Klasse erbt automatisch die Objektklasse, aber in der Schnittstelle ist dies nicht möglich.

  5. Die abstrakte Klasse ist schneller als die Schnittstelle in der Implementierung.