21 Interface
Die öffentlichen Methoden eines Objekts bilden die Schnittstelle, über die seine Umgebung mit ihm kommunizieren kann. Soll sichergestellt werden, dass Objekte verschiedener Klassen auf die gleiche Weise angesprochen werden können, müssen die entsprechenden Klassen jeweils die betreffenden öffentlichen Methoden implementieren.
Will die Umgebung eine dieser Methoden aufrufen, benötigt sie einen Verweis auf das entsprechende Objekt. Bei einem Verweis muss jedoch genau festgelegt sein, welchen Typ das Objekt besitzt, auf das verwiesen wird. Obwohl verschiedene Klassen über Methoden mit der gleichen Signatur und dem gleichen Rückgabetyp verfügen, muss die Umgebung deshalb für jede dieser Klassen einen eigenen Zugriffsweg implementieren.
Um dies zu vermeiden, können in Java sogenannte Interfaces (Schnittstellen) verwendet werden.
Implementiert eine Klasse ein Interface, sichert sie zu, dass sie alle in dem Interface vorgesehenen Methoden implementiert. Objekte dieser Klasse besitzen damit auch den Typ des implementierten Interfaces. Dies hat den Vorteil, dass ihre Objekte auch überall dort einsetzbar sind, wo ein Objekt mit dem Referenztyp des jeweils implemetierten Interfaces verlangt wird. Allerdings sind in diesem Fall nur die Methoden sichtbar, die das betreffende Interface vorschreibt.
Beispiel
Das Interface DataAccessStudent
deklariert öffentliche, abstrakte Methoden, die für den Zugriff auf gespeicherte Schülerdaten erforderlich sind.
Die Klassen DataAccessStudentDatabase
und DataAccessStudentXmlFile
implementieren jeweils dieses Interface.
In der Klasse DataAccessStudentDatabase
werden die vom Interface vorgegebenen Methoden so implementiert, dass die Schülerdaten aus einer Datenbank gelesen beziehungsweise dort gespeichert werden.
Die Klasse DataAccessStudentXmlFile
implementiert diese Methoden derart, dass die Schülerdaten aus einer XML-Datei gelesen beziehungsweise dort gespeichert werden.
SchoolAdministration
kann dem Attribut dataAccessStudent
nun ein Objekt der Klasse DataAccessStudentDatabase
, ein Objekt der Klasse DataAccessStudentXmlFile
oder ein Objekt irgendeiner anderen Klasse, die das Interface DataAccessStudent
implementiert hat, zugewiesen werden.