EMZETT.
Login

Abstrakte Klasse oder Interface?

Kurz: Eine abstrakte Klasse ist ein unfertiger Bauplan mit gemeinsamem Zustand und Code. Ein Interface ist ein reiner Vertrag: Es legt fest, was eine Klasse können muss, nicht wie.

Genauer: Beide kann man nicht direkt instanziieren. Eine Klasse erbt von höchstens einer abstrakten Klasse, kann aber viele Interfaces umsetzen. Moderne Interfaces dürfen zwar Standardmethoden enthalten, aber keinen Objektzustand.

Im Detail

MerkmalAbstrakte KlasseInterface
Felder mit Zustandjanein (nur Konstanten)
Konstruktorjanein
Mehrfachvererbungneinja (viele Interfaces)
Methoden mit Codejaseit Java 8 als default
Beziehung„ist ein“„kann“
  • Abstrakte Klasse wählen: wenn verwandte Klassen Code und Zustand teilen (Tier mit Name und essen()).
  • Interface wählen: wenn unterschiedliche Klassen dieselbe Fähigkeit haben (Comparable, Runnable).
  • Beispiel: abstract class Form { abstract double flaeche(); }, interface Zeichenbar { void zeichne(); }.
  • Kombination: Oft beides: Interface als Vertrag, abstrakte Klasse als Grundgerüst.

Siehe auch: abstraktion, Vererbung