Zum Hauptinhalt springen

Schnittstellen (Interfaces)

Wird eine Klasse von mehreren Klassen abgeleitet, spricht man von Mehrfachvererbung. Das Prinzip der Mehrfachvererbung wird von vielen Programmiersprachen allerdings nicht (direkt) unterstützt. Der Hauptgrund hier sind mögliche Mehrdeutigkeiten. Erbt eine Klasse über mehrere mögliche Pfade von einer Basisklasse und werden dabei möglicherweise Methoden der Basisklasse unterschiedlich überschrieben, entstehen dadurch nicht eindeutige Varianten. Aufgrund der Rautenform des Klassendiagramms wird dieses Szenario also Diamantenproblem bezeichnet.

Zur Lösung des Diamantenproblems werden Schnittstellen (Interfaces) verwendet. Schnittstellen sind im Prinzip abstrakte Klassen, die ausschließlich abstrakte Methoden besitzen. Durch Schnittstellen wird sichergestellt, dass Klassen bestimmte Methoden bereitstellen und dass verschiedene Klassen miteinander kommunizieren können.

Definition von Schnittstellen

Die Definition einer Schnittstelle erfolgt analog zur Definition von Klassen. Das Schlüsselwort für Schnittstellen lautet interface. Eine Schnittstelle kann nur öffentliche, abstrakte und öffentliche, statische Methoden beinhalten.

MobileDevice.java
public interface MobileDevice {

int getScreenSizeInInches();

}
Hinweis

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

Implementieren von Schnittstellen

Schnittstellen werden mit Hilfe des Schlüsselworts implements von einer Klasse implementiert. Durch die Implementierung der Schnittstelle verpflichtet sich die Klasse, alle Methoden der Schnittstelle zu implementieren.

MobileDevice.java
public interface MobileDevice {

int getScreenSizeInInches();

}

Verwenden von Schnittstellen

Schnittstellen können ebenso 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();

}