Unterschied zwischen abstrakter Klasse und Schnittstelle in Java

Eine der grundlegenden Java-Interviewfragen ist, was der Unterschied zwischen abstrakter Klasse und Schnittstelle ist. Wenn Sie ein Anfänger in Java sind, kommen Sie in keinem Java-Interview um diese Frage herum, um Ihr Wissen über Java-OOPs-Konzepte zu testen. In diesem kurzen Tutorial werde ich das aufschreiben Unterschied zwischen abstrakter Klasse und Schnittstelle in Java. Außerdem gibt es einige einfache Beispiele für abstrakte Klassen und Schnittstellen.

Die folgende Tabelle zeigt die wichtigsten Unterschiede:

Abstrakte Klasse in Java
Schnittstelle in Java
1Eine abstrakte Klasse kann Instanzmethoden haben, die eine Standardimplementierung hättenDie Schnittstelle ist implizit abstrakt und kann keine Standardmethodenimplementierung haben. Mit Java 8 können Schnittstellen jedoch über eine Methodenimplementierung mithilfe des Standardschlüsselworts verfügen.
2Abstrakte Klasse unterstützt keine Mehrfachvererbung.Schnittstelle unterstützt Mehrfachvererbung.
3Abstrakte Klassen können Konstruktoren haben.Schnittstellen können keinen Konstruktor deklarieren.
4 Eine abstrakte Klasse kann jeweils nur eine Klasse oder eine abstrakte Klasse erweitern Die Schnittstelle kann eine beliebige Anzahl von Schnittstellen gleichzeitig erweitern
5 Eine abstrakte Klasse kann von einer Klasse oder von einer abstrakten Klasse ausgehen Schnittstelle kann nur von einer Schnittstelle aus erweitert werden
6 Eine abstrakte Klasse kann sowohl abstrakte als auch konkrete Methoden haben Schnittstelle kann nur abstrakte Methoden haben
7 Eine Klasse kann nur eine abstrakte Klasse erweitern Eine Klasse kann beliebig viele Schnittstellen implementieren
8 In abstrakten Klassen ist das Schlüsselwort „abstract“ obligatorisch, um eine Methode als abstrakt zu deklarieren In einer Schnittstelle ist das Schlüsselwort „abstract“ optional, um eine Methode als Abstract zu deklarieren
9 Abstrakte Klassen können geschützte, öffentliche und öffentliche abstrakte Methoden haben. Es gibt kein implizites Verhalten für die Mitglieder. Die Schnittstelle kann nur öffentliche abstrakte Methoden haben. Die Mitglieder der Schnittstelle sind standardmäßig implizit öffentlich. Außerdem können Schnittstellen keine statischen Methoden haben.
10 Eine abstrakte Klasse kann eine statische, endgültige oder statische Endvariable mit einem beliebigen Zugriffsspezifizierer haben Schnittstellenmitglieder sind standardmäßig implizit statisch und endgültig.

Beispiel für eine abstrakte Klasse

public abstract class AbstractClass{
     public int i = 10;
     public void abstract abstractMethod();
     public void methodImpl(){
         System.out.println("Default Method Implementation");
     }
}

class ClassImpl extends AbstractClass{
    public void abstractMethod(){
        System.out.println("Method Implementation in Sub Class");
    }
}

Schnittstellenbeispiel

public class InterfaceExample{
     public static final i = 10; //public, static, final keywords are optional.
     public void abstractMethod(); //This method is implicitly abstract
     public void methodImpl(){ // This method is not legal. Method implementation not allowed in interfaces.
         
     }
}

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen