Kursinhalt
Java OOP
Java OOP
Abstrakte Klasse vs Schnittstelle
Welche Option wählen?
Aus den vorherigen Kapiteln ist Ihnen möglicherweise aufgefallen, dass abstract classes
und interfaces
ziemlich ähnlich sind. Es gibt jedoch Unterschiede zwischen ihnen. Kurz gesagt, kann man sagen, dass in der Praxis interfaces oft bevorzugt werden gegenüber abstract classes.
Was ist der Unterschied?
- Syntax:
abstract class
bei der Deklaration einer abstract class undinterface
bei der Deklaration eines interface; - Vererbungsschlüsselwort:
extends
für die Vererbung einer abstract class, undimplements
für die Vererbung eines interface; - Bezeichnungen für Unterklassen: Eine Unterklasse einer
abstract class
wird als subclass oder erbbare Klasse bezeichnet, während eine Unterklasse einesinterface
als class - implementation bezeichnet wird; - Anzahl der Vererbungen: Man kann von nur einer
abstract class
erben, während man von mehreren interfaces erben kann; - Eine abstract class kann sowohl implementierte als auch abstract methods besitzen. Ab Java 8 können interfaces auch
default
methods haben, die wir später in diesem Abschnitt besprechen werden; - Methoden in einer abstract class können jeden Zugriffsmodifikator haben, während in interfaces nur der
public
Zugriffsmodifikator erlaubt ist.
Hinweis
Wir können auch gleichzeitig von einer abstract class erben und ein interface implementieren. Zuerst verwenden wir das Schlüsselwort
extends
, und dannimplements
. Die Syntax sieht wie folgt aus: ``` class ClassName extends AbstractClass implements Interface {
Auf einfache Weise ist eine abstrakte Klasse eine Klasse, die einige Funktionalitäten bereitstellt und bestimmte Regeln durchsetzt, aber lässt einige Teile von ihren Unterklassen vervollständigen. Eine Schnittstelle hingegen ist wie eine Checkliste, die eine Klasse erfüllen muss, wobei sie angibt, welche Methoden sie haben muss, ohne tatsächlichen Code bereitzustellen.
Danke für Ihr Feedback!