Abstraktion gilt als eines der wichtigsten Merkmale der objektorientierten Programmierung. Es trägt dazu bei, die Komplexität der Implementierung zu verbergen, indem es Funktionalitäten über zugängliche Schnittstellen bietet.
Um Abstraktion in Java zu erreichen, werden häufig abstrakte Klassen und Schnittstellen verwendet. Die Anwendung der abstrakten Klasse und der Schnittstelle unterscheidet sich voneinander.
Key Take Away
- Abstrakte Klassen erlauben eine teilweise Implementierung, während Schnittstellen keine Implementierung bereitstellen.
- Eine Klasse kann nur eine abstrakte Klasse erben, aber mehrere Schnittstellen implementieren.
- Abstrakte Klassen können Konstruktoren, Felder und nicht abstrakte Methoden haben, während Schnittstellen dies nicht können.
Abstrakte Klasse vs. Schnittstelle in Java
Der Unterschied zwischen abstrakter Klasse und Schnittstelle in JJava besteht darin, dass sich abstrakte Klasse auf einen benutzerdefinierten Typ bezieht, der als Blaupause zum Erstellen eines Objekts fungiert. Eine abstrakte Klasse verfügt über Methoden und Eigenschaften, die das Verhalten und den Status des Objekts darstellen. Andererseits bezieht sich die Schnittstelle auf einen benutzerdefinierten Typ, der über eine Reihe von Methodensignaturen und Feldkonstanten verfügen kann, die von durch die Schnittstelle implementierten Klassen überschrieben werden.
Abstrakte Klasse bezieht sich auf eine Klasse, die das Schlüsselwort abstract in ihrer Deklaration enthält. Es hilft, die Blaupause für konkrete Klassen zu entwickeln.
Es sollte mindestens eine abstrakte Methode haben, wie eine Methode, die keinen Körper hat. Eine abstrakte Klasse kann mehrere konkrete Methoden haben. Es ermöglicht seinen Benutzern, Codes wiederzuverwenden.
Schnittstelle bezieht sich auf eine Blaupause, die verwendet wird, um eine Klasse zu implementieren. Konkrete Methoden oder Methoden mit Code sind nicht in der Schnittstelle enthalten. In einer Schnittstelle sind nur abstrakte Methoden oder Methoden ohne Code enthalten.
Die Instanziierung einer Schnittstelle ist unmöglich, aber Schnittstellenklassen, die Klassen implementieren, können leicht instanziiert werden.
Vergleichstabelle
Vergleichsparameter | Abstrakte Klasse in Java | Schnittstelle in Java |
---|---|---|
Stichwort (Keyword) | Zum Deklarieren der abstrakten Klasse wird das Schlüsselwort abstract verwendet. | Zur Deklaration der Schnittstelle wird das Schlüsselwort interface verwendet. |
Methoden | In einer abstrakten Klasse können sowohl nicht-abstrakte als auch abstrakte Methoden vorhanden sein. | Nur die abstrakte Methode kann in der Schnittstelle dargestellt werden. Es kann seitdem auch statische und Standardmethoden haben Java 8. |
Variablen | Eine abstrakte Klasse unterstützt keine Mehrfachvererbungen. | In einer Schnittstelle können nur finale und statische Variablen vorhanden sein. |
Erbe | Die Schnittstelle unterstützt Mehrfachvererbungen. | Ein anderes Java kann erweitert werden und eine abstrakte Klasse kann mehrere Java-Schnittstellen implementieren. |
Erweiterung | Nur eine andere Schnittstelle in Java kann um eine Schnittstelle erweitert werden. | Nur eine andere Schnittstelle in Java hat die Möglichkeit, um eine Schnittstelle erweitert zu werden. |
Was ist eine abstrakte Klasse in Java?
In Java ist eine abstrakte Klasse eine Klasse, die durch das Schlüsselwort abstract deklariert wird. In einem Abstract können sowohl die nicht-abstrakten als auch die abstrakten Methoden enthalten sein Klasse in Java.
Im Allgemeinen bezieht sich eine abstrakte Klasse auf eine Vorlage, die zum Speichern nützlicher Programmierdatenmethoden und -mitglieder verwendet wird. In Java ist die Instanziierung der abstrakten Klasse nicht direkt möglich. Stattdessen kann die abstrakte Klasse in Unterklassen unterteilt werden.
Eine abstrakte Klasse ermöglicht es den Entwicklern, die Code-Implementierung auszublenden, was ihnen hilft, den Datenabstraktionsprozess reibungslos auszuführen.
Es spart auch Zeit bei der Codierung. Eine abstrakte Methode kann beim Codieren überall aufgerufen werden und vermeidet die Wiederholung des Codes.
Bei der Verwendung einer abstrakten Klasse in Java sind die wichtigsten Regeln:
- Beim Deklarieren einer abstrakten Klasse ist das Schlüsselwort „abstract“ sehr wichtig.
- In Java ist die Instanziierung der abstrakten Klasse nicht direkt möglich. In einer abstrakten Klasse ist mindestens eine abstrakte Methode erforderlich.
- Final-Methoden sind auch in einer abstrakten Klasse enthalten.
- Statische und Konstruktormethoden können in eine abstrakte Klasse eingeschlossen werden.
Die Hauptvorteile einer abstrakten Klasse in Java bestehen darin, dass sie beim Schreiben von Codes mit kurzer Länge sehr hilfreich ist und außerdem die Wahrscheinlichkeit einer Codeduplizierung ausschließt. Es ermöglicht auch die Wiederverwendbarkeit von Code.
Was ist eine Schnittstelle in Java?
Wie eine abstrakte Klasse kann eine Zusammenfassung in Java Variablen und Methoden haben. Aber in einer Schnittstelle sind die deklarierten Methoden standardmäßig abstrakt.
Sie legt fest, wie und was eine abstrakte Klasse tun muss. Sie gilt als Blaupause der abstrakten Klasse. Es hat eine Sammlung von Methoden, die die Klasse möglicherweise nicht anwendet oder anwenden kann.
Die Schnittstelle in Java wird verwendet, um eine vollständige Abstraktion zu erreichen. Es kann auch mehrere Vererbungen haben, die in abstrakten Klassen nicht unterstützt werden.
Zur Erzielung einer losen Kopplung wird auch eine Schnittstelle verwendet. Schnittstellen werden häufig in Java-Entwurfsmustern verwendet und können eine Funktion ausführen.
Die Schnittstellenmethoden haben niemanden. Es ist ein Mechanismus, der hauptsächlich verwendet wird, um mehrere Vererbungen und Abstraktionen in Java zu erreichen.
Die Haupteigenschaften einer Java-Schnittstelle sind –
- Eine Schnittstelle in Java ist völlig abstrakt. Abstrakte Schlüsselwörter sind beim Deklarieren einer Schnittstelle in Java nicht erforderlich.
- Jede der Schnittstellenmethoden ist ebenfalls vollständig abstrakt. Daher müssen beim Deklarieren von Schnittstellenmethoden keine abstrakten Schlüsselwörter verwendet werden.
- Jede Schnittstellenmethode ist vollständig öffentlich.
Der Hauptvorteil einer Schnittstelle in Java besteht darin, dass sie zum Erreichen einer Datenabstraktion verwendet werden kann und auch zur Unterstützung von Multi-Erbschaft Funktionalitäten in Java. Es wird auch in loser Kopplung verwendet.
Hauptunterschiede zwischen abstrakter Klasse und Schnittstelle in Java
- In einer abstrakten Klasse können sowohl nicht-abstrakte als auch abstrakte Methoden vorhanden sein. Andererseits können nur abstrakte Methoden in der Oberfläche dargestellt werden. Seit Java 8 kann es auch statische und Standardmethoden haben.
- Eine abstrakte Klasse kann nicht-statische, statische, nicht-finale und finale Variablen haben. In einer Schnittstelle können nur finale und statische Variablen vorhanden sein.
- Zum Deklarieren der abstrakten Klasse wird das Schlüsselwort abstract verwendet. Zur Deklaration der Schnittstelle wird das Schlüsselwort interface verwendet.
- Eine abstrakte Klasse unterstützt keine Mehrfachvererbungen. Mehrfachvererbungen hingegen werden von der Schnittstelle unterstützt.
- Durch eine abstrakte Klasse können weitere Java-Schnittstellen erweitert und mehrere Java-Schnittstellen implementiert werden. Dennoch hat nur eine andere Schnittstelle in Java die Möglichkeit, um eine Schnittstelle erweitert zu werden.
- https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=abstract+class+in+java&btnG=#d=gs_qabs&u=%23p%3DW3WgwQb0NOAJ
- https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=interface+in+java&btnG=#d=gs_qabs&u=%23p%3Dzhwh3VcdqSkJ
Letzte Aktualisierung: 11. Juni 2023
Sandeep Bhandari hat einen Bachelor of Engineering in Computers von der Thapar University (2006). Er verfügt über 20 Jahre Erfahrung im Technologiebereich. Er interessiert sich sehr für verschiedene technische Bereiche, darunter Datenbanksysteme, Computernetzwerke und Programmierung. Sie können mehr über ihn auf seinem lesen Bio-Seite.
Das ist ein beeindruckender Artikel, die Erklärungen sind so klar und prägnant. Sehr gut gemacht.
Können wir einen Moment innehalten und darüber lachen, wie Akademiker schreiben? Es ist lustig, aber toller Artikel.
Der direkte Vergleich zwischen abstrakten Klassen und Schnittstellen ist sehr nützlich. Ich habe nach einem Artikel wie diesem gesucht.
Ich glaube, dieser Artikel hätte mir bei meinem letzten Projekt helfen können. Aber es ist eine gute Referenz für das nächste.
Ich glaube nicht, dass dieser Artikel so hilfreich ist, wie Sie sagen. Ich denke, es fehlt eine ausführliche Erklärung.
Es wäre besser, wenn Sie einige Codebeispiele bereitstellen würden. Obwohl die Erklärungen gut sind.