Abstrakte Klasse vs. Interface
Welche Option wählen
Aus den vorherigen Kapiteln ist ersichtlich, dass abstract classes und interfaces sehr ähnlich sind. Dennoch gibt es Unterschiede zwischen ihnen. Kurz gesagt, werden in der Praxis Interfaces häufig bevorzugt gegenüber abstrakten Klassen. Doch warum ist das so?
Was ist der Unterschied
Zunächst müssen die Unterschiede zwischen einer abstrakten Klasse und einem Interface verstanden werden. Hier eine Übersicht:
- Syntax:
abstract classbei der Deklaration einer abstrakten Klasse undinterfacebei der Deklaration eines Interfaces; - Vererbungs-Schlüsselwort:
extendsfür die Vererbung einer abstrakten Klasse undimplementsfür die Implementierung eines Interfaces; - Bezeichnungen für Unterklassen: Eine Unterklasse einer
abstract classwird als Unterklasse oder erbende Klasse bezeichnet, während eine Unterklasse einesinterfaceals Klasse - Implementierung bezeichnet wird; - Anzahl der Vererbungen: Es kann von nur einer abstrakten Klasse geerbt werden, während von mehreren Interfaces geerbt werden kann;
- Eine
abstract classkann sowohl implementierte als auch abstrakte Methoden enthalten. Seit Java 8 können Interfaces ebenfallsdefault-Methoden besitzen, worauf später in diesem Abschnitt eingegangen wird; - Methoden in einer abstrakten Klasse können beliebige Zugriffsmodifizierer besitzen, während in Interfaces nur der Zugriffsmodifizierer
publicerlaubt ist.
Hinweis
Es ist auch möglich, gleichzeitig von einer abstrakten Klasse zu erben und ein Interface zu implementieren. Zuerst wird das Schlüsselwort
extendsverwendet, danachimplements. Die Syntax sieht folgendermaßen aus:class ClassName extends AbstractClass implements Interface {}
Vereinfacht gesagt kann eine abstrakte Klasse als Klasse betrachtet werden, die bestimmte Funktionalitäten bereitstellt und bestimmte Regeln vorgibt, aber einige Teile ihren Unterklassen zur Umsetzung überlässt. Ein Interface hingegen ist wie eine Checkliste, die eine Klasse erfüllen muss, indem sie vorgibt, welche Methoden vorhanden sein müssen, ohne tatsächlichen Code bereitzustellen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 4.76
Abstrakte Klasse vs. Interface
Swipe um das Menü anzuzeigen
Welche Option wählen
Aus den vorherigen Kapiteln ist ersichtlich, dass abstract classes und interfaces sehr ähnlich sind. Dennoch gibt es Unterschiede zwischen ihnen. Kurz gesagt, werden in der Praxis Interfaces häufig bevorzugt gegenüber abstrakten Klassen. Doch warum ist das so?
Was ist der Unterschied
Zunächst müssen die Unterschiede zwischen einer abstrakten Klasse und einem Interface verstanden werden. Hier eine Übersicht:
- Syntax:
abstract classbei der Deklaration einer abstrakten Klasse undinterfacebei der Deklaration eines Interfaces; - Vererbungs-Schlüsselwort:
extendsfür die Vererbung einer abstrakten Klasse undimplementsfür die Implementierung eines Interfaces; - Bezeichnungen für Unterklassen: Eine Unterklasse einer
abstract classwird als Unterklasse oder erbende Klasse bezeichnet, während eine Unterklasse einesinterfaceals Klasse - Implementierung bezeichnet wird; - Anzahl der Vererbungen: Es kann von nur einer abstrakten Klasse geerbt werden, während von mehreren Interfaces geerbt werden kann;
- Eine
abstract classkann sowohl implementierte als auch abstrakte Methoden enthalten. Seit Java 8 können Interfaces ebenfallsdefault-Methoden besitzen, worauf später in diesem Abschnitt eingegangen wird; - Methoden in einer abstrakten Klasse können beliebige Zugriffsmodifizierer besitzen, während in Interfaces nur der Zugriffsmodifizierer
publicerlaubt ist.
Hinweis
Es ist auch möglich, gleichzeitig von einer abstrakten Klasse zu erben und ein Interface zu implementieren. Zuerst wird das Schlüsselwort
extendsverwendet, danachimplements. Die Syntax sieht folgendermaßen aus:class ClassName extends AbstractClass implements Interface {}
Vereinfacht gesagt kann eine abstrakte Klasse als Klasse betrachtet werden, die bestimmte Funktionalitäten bereitstellt und bestimmte Regeln vorgibt, aber einige Teile ihren Unterklassen zur Umsetzung überlässt. Ein Interface hingegen ist wie eine Checkliste, die eine Klasse erfüllen muss, indem sie vorgibt, welche Methoden vorhanden sein müssen, ohne tatsächlichen Code bereitzustellen.
Danke für Ihr Feedback!