Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Abstrakte Klasse vs. Schnittstelle | Schnittstelle
Java Oop
course content

Kursinhalt

Java Oop

Java Oop

1. Arbeiten mit der IDE
2. Oop
3. Schnittstelle

book
Abstrakte Klasse vs. Schnittstelle

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 von nur einer abstrakten Klasse geerbt werden, während von mehreren Interfaces geerbt werden kann;
  • 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 besitzen, 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 3. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

course content

Kursinhalt

Java Oop

Java Oop

1. Arbeiten mit der IDE
2. Oop
3. Schnittstelle

book
Abstrakte Klasse vs. Schnittstelle

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 von nur einer abstrakten Klasse geerbt werden, während von mehreren Interfaces geerbt werden kann;
  • 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 besitzen, 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 3. Kapitel 3
some-alt