Interface vs Abstract Class in Java: Was ist der Unterschied?

Inhaltsverzeichnis:

Anonim

Was ist Schnittstelle?

Die Schnittstelle ist eine Blaupause, mit der eine Klasse implementiert 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, können jedoch öffentliche statische Endvariablen (dh konstante Klassenvariablen) enthalten.

Was ist abstrakte Klasse?

Eine Klasse, deren Deklaration das Schlüsselwort abstract enthält, wird als abstrakte Klasse bezeichnet. Abstrakte Klassen sollten mindestens eine abstrakte Methode haben. dh Methoden ohne Körper. Es kann mehrere konkrete Methoden geben.

Mit abstrakten Klassen können Sie Blaupausen für konkrete Klassen erstellen. Die erbende Klasse sollte jedoch die abstrakte Methode implementieren.

Abstrakte Klassen können nicht instanziiert werden.

Wichtige Gründe für die Verwendung von Schnittstellen

  • Schnittstellen werden verwendet, um eine Abstraktion zu erreichen.
  • Entwickelt, um die dynamische Methodenauflösung zur Laufzeit zu unterstützen
  • Es hilft Ihnen, eine lose Kopplung zu erreichen.
  • Ermöglicht das Trennen der Definition einer Methode von der Vererbungshierarchie

Wichtige Gründe für die Verwendung von Abstract Class

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

Schnittstelle Vs. Abstrakte Klasse

Mit einer abstrakten Klasse können Sie Funktionen erstellen, die von Unterklassen implementiert oder überschrieben werden können, während Sie mit einer Schnittstelle Funktionen nur angeben, aber nicht implementieren können. Eine Klasse kann nur eine abstrakte Klasse erweitern, während eine Klasse mehrere Schnittstellen implementieren kann.

Parameter Schnittstelle Abstrakte Klasse
Geschwindigkeit Schleppend Schnell
Mehrfachvererbungen Implementieren Sie mehrere Schnittstellen Nur eine abstrakte Klasse
Struktur Abstrakte Methoden Abstrakte & konkrete Methoden
Wann zu verwenden Zukünftige Verbesserung Unabhängigkeit vermeiden
Vererbung / Implementierung Eine Klasse kann mehrere Schnittstellen implementieren Die Klasse kann nur eine abstrakte Klasse erben
Standardimplementierung Beim Hinzufügen neuer Inhalte zur Benutzeroberfläche ist es ein Albtraum, alle Implementierer zu finden und neu definierte Inhalte zu implementieren. Im Fall von Abstract Class können Sie die Standardimplementierung nutzen.
Zugriffsmodifikatoren Die Schnittstelle verfügt nicht über Zugriffsmodifikatoren. Alles, was in der Schnittstelle definiert ist, wird als öffentlicher Modifikator angenommen. 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.
Standardeinstellung für Mehrfachvererbung Eine Klasse kann zahlreiche Schnittstellen implementieren. Eine Klasse erbt nur eine abstrakte Klasse.
Implementierung Eine Schnittstelle ist abstrakt, sodass sie keinen Code bereitstellen kann. Eine abstrakte Klasse kann vollständigen Standardcode angeben, der überschrieben werden sollte.
Verwendung von Zugriffsmodifikatoren Sie können keine Zugriffsmodifikatoren für die Methode, Eigenschaften usw. verwenden. Sie können eine abstrakte Klasse verwenden, die Zugriffsmodifikatoren enthält.
Verwendung 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 eine beliebige Anzahl von Schnittstellen erweitern. Es kann jeweils nur eine Klasse oder eine abstrakte Klasse erweitert werden.
Abstraktes Schlüsselwort In einem Schlüsselwort für eine abstrakte Schnittstelle ist es optional, eine Methode als abstrakt zu deklarieren. In einer abstrakten Klasse ist das abstrakte Schlüsselwort obligatorisch, um eine Methode als abstrakt 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 Interface und Abstract Class in Java

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

Schnittstellensyntax

interface name{//methods}

Beispiel für eine Java-Schnittstelle:

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();}}

Syntax der abstrakten Klasse

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 " + (obj.b * obj.b));}}