Zum Hauptinhalt springen

Schnittstellen (Interfaces)

Erbt eine Klasse von mehreren Klassen gleichzeitig, spricht man von Mehrfachvererbung. Dieses Konzept wird von vielen Programmiersprachen nicht direkt unterstützt, da es zu Mehrdeutigkeiten führen kann: Erbt eine Klasse über mehrere Pfade von derselben Basisklasse und wurde dabei eine Methode unterschiedlich überschrieben, entsteht Unklarheit, welche Implementierung verwendet werden soll. Aufgrund der Rautenform im Klassendiagramm bezeichnet man dieses Problem als Diamantenproblem.

Zur Lösung des Diamantenproblems werden Schnittstellen (Interfaces) eingesetzt. Schnittstellen sind im Wesentlichen abstrakte Klassen, die ausschließlich abstrakte Methoden enthalten. Sie stellen sicher, dass implementierende Klassen bestimmte Methoden bereitstellen, ohne eine konkrete Vererbungshierarchie vorzuschreiben.

Definition von Schnittstellen

Eine Schnittstelle wird ähnlich wie eine Klasse definiert, verwendet aber das Schlüsselwort interface. Sie kann nur öffentliche abstrakte sowie öffentliche statische Methoden enthalten.

MobileDevice.java
public interface MobileDevice {

int getScreenSizeInInches();

}
info

Die Angabe von abstract und public bei Methoden ist nicht erforderlich.

Implementieren von Schnittstellen

Eine Schnittstelle wird mit dem Schlüsselwort implements von einer Klasse implementiert. Damit verpflichtet sich die Klasse, alle Methoden der Schnittstelle zu implementieren.

MobileDevice.java
public interface MobileDevice {

int getScreenSizeInInches();

}

Verwenden von Schnittstellen

Schnittstellen können wie Klassen als Datentypen verwendet werden. Die Typumwandlung von der implementierenden Klasse zur Schnittstelle bezeichnet man als Upcast, die Rückumwandlung als Downcast.

MobileDevice.java
public interface MobileDevice {

int getScreenSizeInInches();

}
tipp

Eine Schnittstelle eignet sich, wenn mehrere, voneinander unabhängige Klassen dasselbe Verhalten teilen sollen. Eine abstrakte Klasse eignet sich, wenn gemeinsame Implementierungen geerbt werden sollen.