Unterschied zwischen Schnittstelle und abstrakter Klasse in Java

Schlüsseldifferenz: Eine Schnittstelle oder ein Protokoll ist eine übliche Methode, mit der nicht zusammenhängende Objekte miteinander kommunizieren können. Es stellt ein vereinbartes Verhalten dar, das die Interaktion zwischen den beiden Objekten erleichtert. Eine abstrakte Klasse ist eine Klasse von Objekten, die nicht instanziiert werden kann oder eine Instanz eines Objekts einrichten kann. Diese Klasse verfügt möglicherweise über keine Implementierung oder eine unvollständige Implementierung.

Java, C ++, C # sind alles komplizierte Programmiersprachen, für die ein detailliertes Studium und Verständnis erforderlich ist, um damit arbeiten zu können. Es gibt viele verschiedene Methoden, die in diesen Sprachen verwendet werden, um zu entscheiden, wie die Sprache funktionieren wird. Interface und Abstract Class sind zwei verwirrende Konzepte, die Teil der OOP (objektorientierte Programmierung) sind. Diese beiden können einzeln oder zusammen verwendet werden. Diese beiden unterscheiden sich völlig voneinander und werden in unterschiedlichen Fällen verwendet.

Java ist eine Programmiersprache, die von der C-Sprache beeinflusst wurde. Es leitet einen Großteil seiner Syntax von C und C ++ ab, verfügt jedoch über weniger Low-Level-Funktionen als beide. Java ist eine universelle Programmiersprache, die im Vergleich zu früheren Sprachen weniger Implementierungsabhängigkeiten aufweist. Es ist eine gleichzeitige, klassenbasierte und eine objektorientierte Sprache.

Java wurde von James Gosling bei Sun Microsystems entwickelt und 1995 veröffentlicht. Es wurde ursprünglich als Kernkomponente der Java-Plattform von Sun Microsystems veröffentlicht. Sun hat seitdem die meisten seiner Java-Technologien unter der GNU General Public License neu lizenziert. Dies bedeutet, dass die gesamte unter der GNU General Public License lizenzierte Technologie Open Source ist und im Allgemeinen kostenlos zur Verfügung steht. Sun Microsystems fusionierte schließlich mit der Oracle Corporation. Seit 2012 ist Java zu einer der beliebtesten Programmiersprachen geworden. Dies gilt insbesondere für Client-Server-Webanwendungen. Viele andere Systeme haben alternative Implementierungen von Sun-Technologien entwickelt, z. B. GNU Compiler für Java und GNU Classpath.

Eine Schnittstelle oder ein Protokoll ist eine übliche Methode, mit der nicht zusammenhängende Objekte miteinander kommunizieren können. Es stellt ein vereinbartes Verhalten dar, das die Interaktion zwischen den beiden Objekten erleichtert. Die Schnittstelle enthält den Schlüssel zu den verschiedenen auszuführenden Aktionen und dient als Verbindung zwischen den zwei verschiedenen Objekten. Wenn eine Klasse von Objekten für die Schnittstelle verfügbar gemacht wird, müsste die Klasse dem von der Schnittstelle implementierten Verhalten folgen. In der Regel enthalten Schnittstellen nur konstante Deklarationen und Methodensignaturen. Jede Schnittstelle, die eine bestimmte Schnittstelle implementiert, muss alle in der Schnittstelle genannten Methoden anwenden oder als abstrakte Klasse deklariert werden. In Java kann jedes Objekt als Schnittstelle definiert werden, wenn dieses Objekt null ist oder eine Klasse enthält, in der es diese bestimmte Schnittstelle implementiert. In Java können mehrere Schnittstellen zu einer einzigen Klasse implementiert werden, indem Schlüsselwörter zum Implementieren verwendet werden.

Eine abstrakte Klasse ist eine Klasse von Objekten, die nicht instanziiert werden kann oder eine Instanz eines Objekts einrichten kann. Diese Klasse verfügt möglicherweise über keine Implementierung oder eine unvollständige Implementierung. Es kann auch abstrakte Methoden oder Eigenschaften haben, die von allen Unterklassen gemeinsam genutzt werden. In einigen Programmiersprachen werden abstrakte Typen ohne Implementierung als Schnittstellen bezeichnet. In Java kann ein abstrakter Typ mit dem Schlüsselwort 'abstract' in der Klassendefinition erstellt werden. Der Zweck, eine abstrakte Klasse zu haben, um alle Methoden zu platzieren, die nicht in der abstrakten Klasse implementiert sind, und es der Unterklasse überlassen, zu bestimmen, wie diese Klassen implementiert werden sollen. Wenn eine Klasse über eine einzige abstrakte Methode verfügt, muss die Klasse als abstrakte Klasse deklariert werden. Es muss jedoch nicht mindestens eine einzige Methode für die Deklaration einer abstrakten Klasse vorhanden sein.

Malliktalksjava.in listet die Hauptunterschiede zwischen Schnittstelle und Zusammenfassung auf:

  • Die abstrakte Klasse hat den Konstruktor, die Schnittstelle jedoch nicht.
  • Abstrakte Klassen können Implementierungen für einige ihrer Mitglieder (Methods) haben, die Schnittstelle kann jedoch keine Implementierung für ihre Mitglieder haben.
  • Abstrakte Klassen sollten Unterklassen haben, die sonst unbrauchbar sind.
  • Schnittstellen müssen über Implementierungen von anderen Klassen verfügen, die sonst unbrauchbar sind
  • Nur eine Schnittstelle kann eine andere Schnittstelle erweitern, aber jede Klasse kann eine abstrakte Klasse erweitern.
  • Alle Variablen in Schnittstellen sind standardmäßig final
  • Schnittstellen bieten eine Form der Mehrfachvererbung. Eine Klasse kann nur eine andere Klasse erweitern.
  • Schnittstellen sind auf öffentliche Methoden und Konstanten ohne Implementierung beschränkt. Abstrakte Klassen können eine teilweise Implementierung, geschützte Teile, statische Methoden usw. haben.
  • Eine Klasse kann mehrere Schnittstellen implementieren. Im Falle einer abstrakten Klasse kann eine Klasse jedoch nur eine abstrakte Klasse erweitern.
  • Schnittstellen sind langsam, da es eine zusätzliche Umleitung erfordert, um die entsprechende Methode in der tatsächlichen Klasse zu finden. Abstrakte Klassen sind schnell.
  • Der Modifikator für Eingabehilfen (Öffentlich / Privat / intern) ist für abstrakte Klassen zulässig. Die Schnittstelle erlaubt keinen Modifikator für die Zugänglichkeit
  • Eine abstrakte Klasse kann vollständige oder unvollständige Methoden enthalten. Schnittstellen können nur die Signatur einer Methode enthalten, aber keinen Körper. Eine abstrakte Klasse kann also Methoden implementieren, aber eine Schnittstelle kann keine Methoden implementieren.
  • Eine abstrakte Klasse kann Felder, Konstruktoren oder Destruktoren enthalten und Eigenschaften implementieren. Eine Schnittstelle darf keine Felder, Konstruktoren oder Destruktoren enthalten. Sie enthält nur die Signatur der Eigenschaft, aber keine Implementierung.
  • Verschiedene Zugriffsmodifizierer wie abstrakt, geschützt, intern, öffentlich, virtuell usw. sind in abstrakten Klassen nützlich, jedoch nicht in Schnittstellen.
  • Der abstrakte Umfang hängt von der abgeleiteten Klasse ab.
  • Der Schnittstellenumfang ist auf jeder Ebene seiner Vererbungskette.

Die Informationen für die Tabelle stammen von codeproject.com und mindprod.com

Schnittstelle

Abstrakte Klasse

Mehrfachvererbung

Eine Klasse kann mehrere Schnittstellen erben.

Eine Klasse kann nur eine abstrakte Klasse erben.

Standardimplementierung

Eine Schnittstelle kann keinen Code bereitstellen, nur die Signatur.

Eine abstrakte Klasse kann vollständigen Standardcode und / oder nur die Details enthalten, die überschrieben werden müssen.

Zugriffsmodifizierer

Eine Schnittstelle kann keine Zugriffsmodifizierer für die Subs, Funktionen, Eigenschaften usw. haben. Alles wird als öffentlich angenommen.

Eine abstrakte Klasse kann Zugriffsmodifizierer für die Subs, Funktionen und Eigenschaften enthalten.

Core vs. Peripherie

Schnittstellen werden verwendet, um die peripheren Fähigkeiten einer Klasse zu definieren. Mit anderen Worten, sowohl Mensch als auch Fahrzeug können von einer IMovable-Schnittstelle erben.

Eine abstrakte Klasse definiert die Kernidentität einer Klasse und wird dort für Objekte desselben Typs verwendet.

Homogenität

Wenn verschiedene Implementierungen nur Methodensignaturen verwenden, ist es besser, Schnittstellen zu verwenden.

Wenn verschiedene Implementierungen vom gleichen Typ sind und gemeinsames Verhalten oder Status verwenden, ist es besser, abstrakte Klassen zu verwenden.

Geschwindigkeit

Erfordert mehr Zeit, um die tatsächliche Methode in den entsprechenden Klassen zu finden.

Schnell

Funktionalität hinzufügen

Wenn wir einer Schnittstelle eine neue Methode hinzufügen, müssen wir alle Implementierungen der Schnittstelle aufspüren und die Implementierung für die neue Methode definieren.

Wenn wir einer abstrakten Klasse eine neue Methode hinzufügen, haben wir die Möglichkeit, eine Standardimplementierung bereitzustellen, sodass der gesamte vorhandene Code möglicherweise ordnungsgemäß funktioniert.

Felder und Konstanten

In Schnittstellen können keine Felder definiert werden.

In einer abstrakten Klasse können Felder und Konstanten definiert sein.

Knappheit

Die konstanten Deklarationen in einer Schnittstelle sind alle als public static final angenommen.

Gemeinsamer Code kann zu einer abstrakten Klasse hinzugefügt werden.

Konstanten

Nur statische Endkonstanten können sie ohne Einschränkung in Klassen verwenden, die die Schnittstelle implementieren.

Sowohl Instanz- als auch statische Konstanten sind möglich. Zur Berechnung der Konstanten können auch statischer Code und Instanz-Initialisierungscode verwendet werden.

Bequemlichkeit für Dritte

Eine Schnittstellenimplementierung kann zu einer vorhandenen Fremdklasse hinzugefügt werden.

Eine Drittanbieter-Klasse muss so umgeschrieben werden, dass sie nur von der abstrakten Klasse ausgeht.

is-a vs. -able oder can-do

Schnittstellen werden häufig verwendet, um die peripheren Fähigkeiten einer Klasse zu beschreiben, nicht ihre zentrale Identität. Beispielsweise kann eine Automobile-Klasse die Recyclable-Schnittstelle implementieren, die sich auf viele ansonsten völlig nicht zusammenhängende Objekte beziehen kann.

Eine abstrakte Klasse definiert die Kernidentität ihrer Nachkommen. Implementierte Schnittstellen listen die allgemeinen Funktionen einer Klasse auf, nicht die einer Klasse.

In einem Java-Kontext sollten Benutzer normalerweise die Runnable-Schnittstelle implementieren, anstatt Thread zu erweitern, da sie nicht wirklich daran interessiert sind, einige neue Thread-Funktionen bereitzustellen. Normalerweise möchten sie nur, dass Code eigenständig ausgeführt werden kann. Sie möchten etwas erstellen, das in einem Thread ausgeführt werden kann, nicht in einer neuen Art von Thread. Die ähnliche Debatte "is vs. vs has" kommt auf, wenn Sie sich entscheiden, zu erben oder zu delegieren.

Plug-in

Der Benutzer kann ein neues Ersetzungsmodul für eine Schnittstelle schreiben, das nicht einen Code enthält, der mit den vorhandenen Implementierungen gemeinsam ist. Wenn der Benutzer die Schnittstelle implementiert, beginnen sie ohne Standardimplementierung von Grund auf. Der Benutzer muss Werkzeuge von anderen Klassen erwerben. nichts außer der Konstanten kommt mit der Schnittstelle. Dies gibt dem Benutzer die Freiheit, ein grundlegend anderes internes Design zu implementieren.

Der Benutzer muss die abstrakte Klasse in der vorliegenden Form für die Codebasis verwenden, einschließlich ihres gesamten Gepäcks, ob gut oder schlecht. Der abstrakte Klassenautor hat dem Benutzer eine Struktur auferlegt.

Instandhaltung

Wenn der Clientcode nur über eine Schnittstelle spricht, können Sie die konkrete Implementierung dahinter mithilfe einer Factory-Methode leicht ändern.

Wenn der Clientcode nur in Bezug auf eine abstrakte Klasse spricht, können Sie die konkrete Implementierung dahinter mithilfe einer Factory-Methode leicht ändern.

Empfohlen

In Verbindung Stehende Artikel

  • Unterschied zwischen: Unterschied zwischen Dual Core und Intel i3

    Unterschied zwischen Dual Core und Intel i3

    Hauptunterschied: Ein Dual-Core-Prozessor ist eine Art Zentraleinheit (CPU), die zwei vollständige Ausführungskerne aufweist. Dual Core ist ein Synonym für Intel Pentium Dual Core. Es kann manchmal auch für die Intel Core 2 Duo-Linie verwendet werden. Intel Core i3 ist eine Art Dual-Core-Prozessor. Es
  • Unterschied zwischen: Unterschied zwischen Samsung Galaxy Mega 5.8 und Samsung Galaxy Tab 2 7.0

    Unterschied zwischen Samsung Galaxy Mega 5.8 und Samsung Galaxy Tab 2 7.0

    Hauptunterschied: Samsung hat sein Angebot in der Kategorie Phablet jetzt um das Samsung Galaxy Mega 5.8 und das Samsung Galaxy Mega 6.3 erweitert. Das Samsung Galaxy Mega 5.8 ist aufgrund seines 5, 8 Zoll großen TFT-Touchscreens mit einer Auflösung von 540 x 960 Pixeln dafür bekannt. Das Telefon wird von einem Dual-Core-Prozessor mit 1, 4 GHz und 1, 5 GB RAM betrieben. D
  • Unterschied zwischen: Unterschied zwischen Samsung Galaxy S6 und S6 Edge

    Unterschied zwischen Samsung Galaxy S6 und S6 Edge

    Hauptunterschied: Das Galaxy S6 verfügt über einen geraden Bildschirm, der an den Seiten mit einer Blende endet. Der S6 Edge wird jedoch mit einem gekrümmten Bildschirm geliefert, der die Seiten des Telefons abdeckt und mit der Rückseite verbunden ist. Samsung hat mit den Galaxy-Flaggschiff-Handys eine große Beule im Smartphone-Bereich gemacht. Es
  • Unterschied zwischen: Unterschied zwischen Bund und Ländern

    Unterschied zwischen Bund und Ländern

    Hauptunterschied: Die Bundesregierung wird von verschiedenen Staaten geführt, die die gesamte Wirtschaft des Landes machen. Eine nationale Regierung bezieht sich nur auf die Zentralregierung des Landes. Die meisten kennen den Unterschied zwischen Bundes- und Staatsangehörigen nicht, da beide Begriffe verwendet werden, um auf ähnliche Dinge Bezug zu nehmen, z. B
  • Unterschied zwischen: Unterschied zwischen einem Dolmetscher und einem Übersetzer in der Programmierung

    Unterschied zwischen einem Dolmetscher und einem Übersetzer in der Programmierung

    Hauptunterschied: Ein Übersetzer ist eine Art Computerprogramm, das einem bestimmten Zweck dient. Wie der Name vermuten lässt, übersetzt ein Übersetzer Code von einer Programmiersprache in eine andere. Es gibt zwei Arten von Übersetzern, die häufig verwendet werden: Compiler und Interpreter. Ein Interpreter macht dasselbe wie ein Übersetzer, außer dass er speziell zum Interpretieren von Programmen in der Hochsprache in die Niedrigsprache verwendet wird. Die Pr
  • Unterschied zwischen: Unterschied zwischen Mikrowelle und Ofen

    Unterschied zwischen Mikrowelle und Ofen

    Hauptunterschied: Ein Ofen ist eine thermisch isolierte Kammer, die zum Erhitzen, Backen oder Trocknen einer Substanz verwendet wird. Es wird am häufigsten zum Kochen verwendet. Ein Mikrowellenherd ist eine Art Ofen, der Mikrowellen zum Erwärmen von Speisen verwendet. Ein Mikrowellenherd ist eine Art Ofen, der Mikrowellen zum Erwärmen von Speisen verwendet. M
  • Unterschied zwischen: Unterschied zwischen Absender, Empfänger und Absender

    Unterschied zwischen Absender, Empfänger und Absender

    Hauptunterschied : Es gibt keinen Unterschied zwischen den Begriffen „Versender“ und „Versender“, da beide Begriffe dasselbe bedeuten; Ein Absender ist eine Person, die in der Regel Eigentümer und Absender der gelieferten Waren ist, während ein „Empfänger“ die Partei oder die Person ist, für die die Sendung versandt wird. Die Begriffe „
  • Unterschied zwischen: Unterschied zwischen gefrorenem Joghurt und Eiscreme

    Unterschied zwischen gefrorenem Joghurt und Eiscreme

    Der Hauptunterschied : Eiscreme ist ein gefrorenes Dessert aus Milch oder Zucker und anderen Aromen, während gefrorener Joghurt ein Dessert ist, das aus Joghurt anstelle von Sahne oder Milch besteht. Der Hauptunterschied zwischen den beiden Desserts beruht auf den Zutaten und den Nährstoffvorteilen.
  • Unterschied zwischen: Unterschied zwischen männlicher und weiblicher Dosenschildkröte

    Unterschied zwischen männlicher und weiblicher Dosenschildkröte

    Hauptunterschied : Männliche und weibliche Schildkröten haben unterschiedliche Eigenschaften, mit denen sie unterschieden werden können. Der einfachste Weg ist, den Plastron (die Unterseite der Schildkröte) zu betrachten. Die männliche Schildkröte hat in der Regel eine konkave Fläche, die das Aufsteigen auf das Weibchen während der Paarung erleichtert. Wenn d

Tipp Der Redaktion

Unterschied zwischen Prognose und Diagnose

Hauptunterschied: Die Prognose bezieht sich in medizinischer Hinsicht auf eine Prognose oder Vorhersage über den wahrscheinlichen Verlauf oder Verlauf einer Erkrankung. Es kann sich auch auf die Vorhersage beziehen, die sich auf die Wahrscheinlichkeit einer Genesung von einer Krankheit bezieht. Zum anderen bezieht sich die Diagnose auf die Erkennung und Erkennung einer möglichen Krankheit oder Störung. D