logo

Unterschied zwischen abstrakter Klasse und Schnittstelle

Sowohl die abstrakte Klasse als auch die Schnittstelle werden verwendet, um eine Abstraktion zu erreichen, bei der wir die abstrakten Methoden deklarieren können. Sowohl die abstrakte Klasse als auch die Schnittstelle können nicht instanziiert werden.

Es gibt jedoch viele Unterschiede zwischen abstrakten Klassen und Schnittstellen, die im Folgenden aufgeführt sind.

Abstrakte KlasseSchnittstelle
1) Abstrakte Klasse kann haben abstrakte und nicht-abstrakte Methoden.Schnittstelle kann haben nur abstrakt Methoden. Seit Java 8 ist dies möglich Standard- und statische Methoden Auch.
2) Abstrakte Klasse unterstützt keine Mehrfachvererbung .Schnittstelle unterstützt Mehrfachvererbung .
3) Abstrakte Klasse kann finale, nicht finale, statische und nicht statische Variablen haben .Schnittstelle hat nur statische und endgültige Variablen .
4) Abstrakte Klasse kann die Implementierung der Schnittstelle bereitstellen .Schnittstelle Die Implementierung einer abstrakten Klasse kann nicht bereitgestellt werden .
5) Die abstraktes Schlüsselwort wird verwendet, um eine abstrakte Klasse zu deklarieren.Der Schlüsselwort interface wird zur Deklaration der Schnittstelle verwendet.
6) Ein abstrakte Klasse kann eine andere Java-Klasse erweitern und mehrere Java-Schnittstellen implementieren.Ein Schnittstelle kann nur eine andere Java-Schnittstelle erweitern.
7) Ein abstrakte Klasse kann mit dem Schlüsselwort „extends“ erweitert werden.Ein Schnittstelle kann mit dem Schlüsselwort „implementiert“ implementiert werden.
8) Nach Java abstrakte Klasse kann Klassenmitglieder wie privat, geschützt usw. haben.Mitglieder einer Java-Schnittstelle sind standardmäßig öffentlich.
9) Beispiel:
öffentliche abstrakte Klasse Shape{
öffentliches abstraktes void draw();
}
Beispiel:
öffentliche Schnittstelle Drawable{
void draw();
}

Vereinfacht gesagt erreicht die abstrakte Klasse eine teilweise Abstraktion (0 bis 100 %), während die Schnittstelle eine vollständige Abstraktion (100 %) erreicht.

Beispiel einer abstrakten Klasse und Schnittstelle in Java

Sehen wir uns ein einfaches Beispiel an, in dem wir sowohl eine Schnittstelle als auch eine abstrakte Klasse verwenden.

 //Creating interface that has 4 methods interface A{ void a();//bydefault, public and abstract void b(); void c(); void d(); } //Creating abstract class that provides the implementation of one method of A interface abstract class B implements A{ public void c(){System.out.println('I am C');} } //Creating subclass of abstract class, now we need to provide the implementation of rest of the methods class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } //Creating a test class that calls the methods of A interface class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
Testen Sie es jetzt

Ausgabe:

 I am a I am b I am c I am d