zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Sowohl als auch. Real existierende Objekte können in der Regel unter mehreren Aspekten betrachtet werden.

Schnittstelle (Interface)

Objektorientierte Programmierung läßt Software sich wie real existierende Objekte verhalten. Das macht Programme verständlicher und verlässlicher. In der realen Welt betrachten wir Objekte oft auf verschiedene Weise. Wir können unser Auto als Fahrzeug betrachten oder als steuerpflichtiges Eigentum.

Es wäre praktisch, wenn Software-Objekte ebenfalls unter mehreren Aspekten betrachtet werden könnten. Aber, ein Java Objekt gehört genau zu einer Klasse.

In Java wird eine Schnittstelle verwendet, um den Aspekt einer anderen Klasse auszudrücken als den von der Superklasse geerbten. Ein Interface ist eine Satz von Anforderungen den eine Klasse implementieren muss.

Eine Schnittstelle ist eine Sammlung von Konstanten und Methodendeklarationen. Die Methodendeklarationen enthalten keine Implementierung (es gibt keinen Methodenkörper.) Eine Klasse, die eine Schnittstelle implementiert, muss jede der in der Schnittstelle gelisteten Methoden implementieren.

Eine Klasse kann eine Elternklasse erweitern, um Methoden und Instanzvariablen dieser Elternklasse zu erben. Eine Klasse kann ebenso eine Schnittstelle implemetieren, um zusätzliche Methoden und Konstanten zu erhalten. Aber, die Methoden der Schnittstelle müssen eplizit als Teil der Klassedefinition geschrieben werden. Eine Schnittstelle ist eine Liste von Anforderungen, die eine Klassendefinition explizit einlösen muss (durch Code nicht durch Vererbung).

Zum Beispiel, eine Klasse Auto erweitert die Klasse Fahrzeug. Dann erbt Auto durch Vererbung alle Instanzmethoden und Instanzvariablen der Klasse Fahrzeug. Wenn die Klasse Auto auch die Schnittstelle Besteuerbar implementiert, dann muss die Klassendefinition von Auto für alle Methoden, die in Besteuerbar gelistet sind, Code bereitstellen.

Wichtiger Hinweis: Das oben stehende, wie auch die folgenden Seiten dieses Kapitels beschreiben das urprüngliche Konzept von Schnittstellen in Java, wie es bis zur Version 7 verwendet wurde. Mit den Java Versionen 8 und 9 wurde dieses Konzept grundlegend geändert. Ab der Version 8 können Schnittstellen static und non-static Methoden (mit Methodenkörper) enthalten, die von Klassen, die die Schnittstelle implementieren, geerbt werden. Ab der Version 9 können Schnittstellen auch konkrete private Methoden static und non-static enthalten.

FRAGE 2:

Kann ein Interface Instanzvariablen enthalten?