Unterschiede zwischen abstrakter Klasse und Schnittstelle in Java

Unterschiede zwischen abstrakter Klasse und Schnittstelle in Java

Zusammenfassung Klasse vs Schnittstelle in Java

Um die Unterschiede zwischen der abstrakten Klasse und der Schnittstelle in Java zu verstehen, ist es wichtig, vor allem die einzelnen dieser unabhängig zu verstehen. Die abstrakte Klasse in Java wird in der Erklärung von Unterklassen mit einer Reihe gemeinsamer Eigenschaften verwendet. Die gemeinsame Verwendung der abstrakten Klasse ist eine Superklasse anderer Klassen, die es ihnen ermöglicht, die abstrakte Klasse zu erweitern. In der Erklärung einer abstrakten Klasse wird ein abstraktes Schlüsselwort verwendet. Genau wie jede andere Klasse hat die abstrakte Klasse Felder, die Methoden und Eigenschaften beschreiben, die die Klasse durchführen kann. Durch die bloße Erklärung einer abstrakten Klasse kann die Klasse nicht eingeleitet werden

Eine Java -Schnittstelle kann einem Protokoll gleichgesetzt werden. Es stellt ein voreingestellter und vereinbartes Verhalten dar, das die Erleichterung der Wechselwirkung 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 daher als Verbindung zwischen dem Hersteller und dem Verbraucher. Schnittstellen in Java sind daher eine Gruppe von Methoden, die leere Körper enthalten, die konstante Erklärungen aufweisen können. Wenn Sie eine Klasse der Java -Schnittstelle aussetzen, bedeutet dies, dass das erwartete Verhalten der Klasse die Implementierung aller Methoden der Schnittstelle ist.


Unterschiede

Zunächst einmal ermöglicht eine abstrakte Klasse Felder, die weder statisch noch endgültig sind, im Gegensatz zu den statischen und endgültigen Feldern, die in Schnittstellen verwendet werden. Schnittstellen können keinen Implementierungscode verwenden, und es kann möglicherweise Implementierungscode in der abstrakten Klasse verwendet werden. Die in der abstrakten Klasse eingeführten Implementierungscodes können einige oder alle implementierten Methoden haben. Standardmäßig sind alle Methoden der Schnittstelle „abstrakt.”

Die Sichtbarkeit ist auch für Methoden oder Mitglieder einer abstrakten Klasse möglich, die variieren können, wie z. B. öffentlich, geschützt, privat oder gar keine. Die Sichtbarkeit der Schnittstelle kann dagegen nur auf eine Art der Sichtbarkeit 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. Anschließend hat die abstrakte Klasse die Fähigkeit, einen Konstruktor zu haben, aber eine Schnittstelle kann keine haben.

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

In der Leistung sind Schnittstellen in der Implementierung tendenziell langsamer im Gegensatz zur abstrakten Klasse, hauptsächlich aufgrund der zusätzlichen Richtung, um die entsprechende Methode in einer Klasse zu finden. Der Unterschied ist jedoch aufgrund moderner java -virtueller Maschinen, die ständig verbessert werden, langsamer geworden.

Wenn Sie eine Methode in einer Schnittstelle hinzufügen. Alternativ können Sie die Schnittstelle so erweitern, dass sie zusätzliche Methoden haben können. Wenn Sie sich mit einer abstrakten Klasse befassen, müssen Sie ledig. Da es Unterschiede zwischen abstrakten Klassen und Schnittstellen gibt, ist es wichtig zu beachten, dass sie keine Rivalen sind, aber die hierin genannten Unterschiede dienen dazu, sich gegenseitig zu ergänzen.  

Zusammenfassung

  1. Abstrakte Klassenfelder sind weder statisch noch endgültig im Gegensatz zur Schnittstelle mit statischen und endgültigen Tabellen.

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

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

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

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