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)

In der objektorientierten Programmierung definieren wir Objekte, die real existierende Objekte nachahmen. 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.

Eine Schnittstelle ist eine Beschreibung von Methoden, die eine Klasse enthalten muss. Die Methoden können Teil der Klassendefinition sein oder von einer Superklasse geerbt sein. Oft sind die in einer Schnittstelle gelisteten Methoden zusätzlich zu den von einer Superklasse geerbten. Eine Schnittstelle kann Konstanten enthalten, die von der Klasse genutzt werden können.

Eine Schnittstelle lässt uns beschreiben, was verschiedene Klassen gemeinsam haben, auch wenn sie zu verschiedenen Klassenhierarchien gehören. Das hilft uns Code in einer konsistenten Weise zu organisieren.

Zum Beispiel könnte eine Klasse Auto eine Klasse Fahrzeug erweitern. Damit erbt sie alle Instanzmethoden und -variablen von Fahrzeug. Wenn Auto auch die Schnittstelle Besteuerbar implementiert, dann beinhaltet sie ebenfalls die Methoden die in Besteuerbar gelistet sind. Ein Fernseher könnte auch Besteuerbar sein, aber würde nicht Fahrzeug erweitern.

Eine Schnittstelle ist eine Liste von Methodenheadern und Konstanten. Eine Schnittstelle hat üblicherweise keine Methodenkörper für die Methoden, die sie aufführt, sondern nur die Header. Eine Klasse, die eine Schnittstelle implementiert, muss die in einer Schnittstelle gelisteten Methoden beinhalten, entweder durch Vererbung oder durch Implementation.

In neueren Java Versionen (Version 8 und folgende) kann eine Schnittstelle auch Default Implementation von Methoden enthalten (static und non-static) Das ist ein sehr spezielles Merkmal, dass nur gelegentlich nützlich ist. Es wird in diesem Kapitel nicht behandelt.

Eine Klasse kann nur eine Superklasse erweitern, um die Instanzmethoden und -variablen dieser Superklasse zu erben. Eine Klasse kann ebenso eine Schnittstelle implementieren, indem sie die Methoden der Schnittstelle definiert oder erbt. Eine Klasse kann mehr als eine Schnittstelle implementieren.

Eine Schnittstelle ist eine Liste von Methoden von denen erwartet wird, dass sie Teil der Klasse sind. Solange die Klasse nicht abstrakt ist, müssen alle Methoden der Schnittstelle Teil der Klasse sein. Wenn eine Klasse nur einige der Methoden einer Schnittstelle implementiert, muss die Klasse als abstrakt deklariert sein.


FRAGE 2:

Kann eine Schnittstelle Instanzvariablen enthalten?

zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite