Unterschied zwischen abstrakter Klasse und Schnittstelle in Java

Hauptunterschied zwischen abstrakter Klasse und Schnittstelle in Java

  • In Interface kann eine Klasse mehrere Schnittstellen implementieren, wรคhrend die Klasse nur eine abstrakte Klasse erben kann.
  • In Interface gibt es keine Zugriffsmodifikatoren. Es wird davon ausgegangen, dass alles, was innerhalb der Schnittstelle definiert ist, einen รถffentlichen Modifikator hat, wohingegen die abstrakte Klasse einen Zugriffsmodifikator haben kann.
  • Die Schnittstelle kann keine Datenfelder enthalten, wohingegen die abstrakte Klasse Datenfelder enthalten kann.
  • Schnittstellen helfen dabei, die peripheren Fรคhigkeiten einer Klasse zu definieren, wรคhrend eine abstrakte Klasse die Identitรคt einer Klasse definiert.

Schnittstelle vs. abstrakte Klasse in Java

Was ist eine abstrakte Klasse?

Eine Klasse, die das Schlรผsselwort abstract in ihrer Deklaration hat, wird abstrakte Klasse genannt. Abstrakte Klassen sollten null oder mehr abstrakte Methoden haben, also Methoden ohne Hauptteil. Sie kรถnnen mehrere konkrete Methoden haben. Mit abstrakten Klassen kรถnnen Sie Blaupausen fรผr konkrete Klassen erstellen. Aber die erbende Klasse sollte die abstrakte Methode implementieren. Abstrakte Klassen kรถnnen nicht instanziiert werden.

Wichtige Grรผnde fรผr den Einsatz von Schnittstellen

  • Schnittstellen werden verwendet, um dies zu erreichen Abstraktion.
  • Entwickelt, um die dynamische Methodenauflรถsung zur Laufzeit zu unterstรผtzen
  • Es hilft Ihnen, eine lose Kopplung zu erreichen.
  • Ermรถglicht Ihnen, die Definition einer Methode von der Vererbungshierarchie zu trennen

Wichtige Grรผnde fรผr die Verwendung der abstrakten Klasse

  • Abstrakte Klassen bieten Standardfunktionen fรผr die Unterklassen.
  • Bietet eine Vorlage fรผr zukรผnftige spezifische Klassen
  • Hilft Ihnen, eine gemeinsame Schnittstelle fรผr seine Unterklassen zu definieren
  • Die abstrakte Klasse ermรถglicht die Wiederverwendbarkeit von Code.

Was ist eine Schnittstelle?

Die Schnittstelle ist eine Blaupause, die zur Implementierung einer Klasse verwendet werden kann. Die Schnittstelle enthรคlt keine konkreten Methoden (Methoden mit Code). Alle Methoden einer Schnittstelle sind abstrakte Methoden. Eine Schnittstelle kann nicht instanziiert werden. Klassen, die Schnittstellen implementieren, kรถnnen jedoch instanziiert werden. Schnittstellen enthalten niemals Instanzvariablen, sie kรถnnen jedoch รถffentliche statische Endvariablen enthalten (d. h. konstante Klassenvariablen).

Unterschied zwischen Schnittstelle und abstrakter Klasse in Java

Mit einer abstrakten Klasse kรถnnen Sie Funktionen erstellen, die von Unterklassen implementiert oder รผberschrieben werden kรถnnen, wรคhrend Sie mit einer Schnittstelle nur Funktionen angeben, diese jedoch nicht implementieren kรถnnen. Eine Klasse kann nur eine abstrakte Klasse erweitern, wรคhrend eine Klasse mehrere Schnittstellen implementieren kann.

KenngrรถรŸen Interface Abstrakte Klasse
Schnelligkeit langsam Schnell
Mehrfachvererbung Implementieren Sie mehrere Schnittstellen Nur eine abstrakte Klasse
Struktur Abstrakte Methoden Abstrakte und konkrete Methoden
Wann zu verwenden Zukรผnftige Erweiterung Um Unabhรคngigkeit zu vermeiden
Vererbung/Implementierung Eine Klasse kann mehrere Schnittstellen implementieren Die Klasse kann nur eine abstrakte Klasse erben
Standardimplementierung Beim Hinzufรผgen neuer Dinge zur Schnittstelle ist es ein Albtraum, alle Implementierer zu finden und neu definierte Dinge zu implementieren. Im Falle einer abstrakten Klasse kรถnnen Sie die Standardimplementierung nutzen.
Zugriffsmodifikatoren Die Schnittstelle verfรผgt รผber keine Zugriffsmodifikatoren. Alles, was innerhalb der Schnittstelle definiert ist, wird als รถffentlicher Modifikator angenommen. Die abstrakte Klasse kann einen Zugriffsmodifikator haben.
Wann zu verwenden Es ist besser, die Schnittstelle zu verwenden, wenn verschiedene Implementierungen nur die Methodensignatur gemeinsam nutzen. Polymorphe Hierarchie von Werttypen. Es sollte verwendet werden, wenn verschiedene Implementierungen derselben Art ein gemeinsames Verhalten aufweisen.
Datenfelder Die Schnittstelle darf keine Datenfelder enthalten. Die Klasse kann Datenfelder haben.
Mehrfachvererbung Standard Eine Klasse kann zahlreiche Schnittstellen implementieren. Eine Klasse erbt nur eine abstrakte Klasse.
Umsetzung Eine Schnittstelle ist abstrakt, sodass sie keinen Code bereitstellen kann. Eine abstrakte Klasse kann vollstรคndigen Standardcode bereitstellen, der รผberschrieben werden sollte.
Verwendung von Access-Modifikatoren Sie kรถnnen keine Zugriffsmodifikatoren fรผr die Methode, Eigenschaften usw. verwenden. Sie kรถnnen eine abstrakte Klasse verwenden, die Zugriffsmodifikatoren enthรคlt.
Anwendungsbereich Schnittstellen helfen dabei, die peripheren Fรคhigkeiten einer Klasse zu definieren. Eine abstrakte Klasse definiert die Identitรคt einer Klasse.
Definierte Felder Es kรถnnen keine Felder definiert werden Mit einer abstrakten Klasse kรถnnen Sie sowohl Felder als auch Konstanten definieren
Erbe Eine Schnittstelle kann mehrere Schnittstellen erben, jedoch keine Klasse. Eine abstrakte Klasse kann eine Klasse und mehrere Schnittstellen erben.
Konstruktor oder Destruktoren Eine Schnittstelle kann keine Konstruktoren oder Destruktoren deklarieren. Eine abstrakte Klasse kann Konstruktoren und Destruktoren deklarieren.
Begrenzung der Erweiterungen Es kann beliebig viele Schnittstellen erweitern. Es kann jeweils nur eine Klasse oder eine abstrakte Klasse erweitert werden.
Abstraktes Schlรผsselwort In einem abstrakten Schnittstellenschlรผsselwort ist optional, um eine Methode als abstrakt zu deklarieren. In einer abstrakten Klasse ist das Schlรผsselwort abstract obligatorisch, um eine Methode als Abstract zu deklarieren.
Klassentyp Eine Schnittstelle kann nur รถffentliche abstrakte Methoden haben. Eine abstrakte Klasse verfรผgt รผber geschรผtzte und รถffentliche abstrakte Methoden.

Beispielcode fรผr Schnittstelle und abstrakte Klasse in Java

Nachfolgend finden Sie Beispielcode zum Erstellen einer Schnittstelle und einer abstrakten Klasse in Java

Schnittstellensyntax

interface name{
//methods
}

Java Schnittstellenbeispiel:

interface Pet {
    public void test();
}
class Dog implements Pet {
    public void test() {
        System.out.println("Interface Method Implemented");
    }
    public static void main(String args[]) {
        Pet p = new Dog();
        p.test();
    }
}

Abstrakte Klassensyntax

abstract class name{
    // code
}

Beispiel fรผr eine abstrakte Klasse:

abstract class Shape {
    int b = 20;
    abstract public void calculateArea();
}

public class Rectangle extends Shape {
    public static void main(String args[]) {
        Rectangle obj = new Rectangle();
        obj.b = 200;
        obj.calculateArea();
    }
    public void calculateArea() {
        System.out.println("Area is " + (b * b));
    }
}

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: