Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Abstrakte Klasse vs. Schnittstelle | Section
Grundlagen der Objektorientierten Programmierung in Java

bookAbstrakte Klasse vs. Schnittstelle

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 wir die Unterschiede zwischen einer abstrakten Klasse und einem Interface verstehen. Hier eine Übersicht:

  • Syntax: abstract class bei der Deklaration einer abstrakten Klasse und interface bei der Deklaration eines Interfaces;
  • Vererbungs-Schlüsselwort: extends für die Vererbung einer abstrakten Klasse und implements für die Implementierung eines Interfaces;
  • Bezeichnungen für Unterklassen: Eine Unterklasse einer abstract class wird als Unterklasse oder erbende Klasse bezeichnet, während eine Unterklasse eines interface als Klassenimplementierung bezeichnet wird;
  • Anzahl der Vererbungen: Es kann nur von einer abstrakten Klasse geerbt werden, aber mehrere Interfaces können implementiert werden;
  • Eine abstract class kann sowohl implementierte als auch abstrakte Methoden enthalten. Seit Java 8 können Interfaces ebenfalls default-Methoden besitzen, auf die wir später in diesem Abschnitt eingehen;
  • Methoden in einer abstrakten Klasse können beliebige Zugriffsmodifizierer haben, während in Interfaces nur der Zugriffsmodifizierer public erlaubt ist.

Hinweis

Es ist auch möglich, gleichzeitig von einer abstrakten Klasse zu erben und ein Interface zu implementieren. Zuerst wird das Schlüsselwort extends verwendet, danach implements. Die Syntax sieht folgendermaßen aus: class ClassName extends AbstractClass implements Interface {}

Vereinfacht gesagt, kann eine abstrakte Klasse als eine 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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 22

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 1. Kapitel 22
some-alt