Interface

Aus php bar
Wechseln zu: Navigation, Suche

Mit einem Interface (dt. Schnittstelle) kann man definieren, welche Methoden eine Klasse haben muss. Dies ist vergleichbar mit der Vererbung von Klassen, mit dem Unterschied, dass das Interface keine Eigenschaften besitzt, sondern nur die Methodenköpfe enthält, die dann von der neuen Klasse überschrieben werden müssen.

Allerdings ist es möglich Konstanten zu definieren, die den Klassen, die das Interface implementieren, zur Verfügung stehen. Die Konstanten sind über den Scope Resolution Operator erreichbar.

Ein Interface ist ähnlich einer abstrakten Klasse, welche nur abstrakte Methoden beinhaltet.

Nützlich ist dies, wenn man mehrere Klassen schreibt, die man alle zu einer Kategorie bzw. einer Funktionalität zusammenlegen kann. Ein Beispiel wäre ein Logger-Interface:

1 

1 //  Beispiel eines Interfaces mit Konstanten
2 '1';
3     const WARNING = '2';
4     const ERROR = '4';
5 }


Dieses Interface kann man nun mit dem Schlüsselwort implements in einer Klasse einbinden lassen.

1 span class="coMULTI">/*....*/'INSERT INTO.....'

1 span class="coMULTI">/*....*/

1 span class="co1">//... weitere Methoden
2 


Wie man hier sieht, wurden die Methoden aus dem Interface überschrieben. Man kann nun weitere Logger-Klassen definieren, die alle mindestens die Methoden open(), write() und close() haben. Somit kann man sich sicher sein, dass das Script auch mit einer anderen Logger-Klasse funktioniert, da es die selben Methoden besitzen muss. Dies verringert die Fehlerquelle beim Erstellen von neuen Logger-Klassen.

Ein Vorteil von Interfaces liegt darin, dass eine Klasse mehrere Interfaces implementieren kann:

1 span class="co1">// ...
2 }


Durch die fehlende Mehrfachvererbung von C++ bleibt dem Entwickler jedoch die Schreibarbeit nicht erspart.



Ein Interface kann beispielsweise dann zur Verfügung gestellt werden, wenn mehrere Entwickler an einem Projekt arbeiten. Jeder Programmierer, der dieses Interface implementiert, wird dann gezwungen alle Methoden des Interfaces zu verwenden und auszuprogrammieren (Methoden eines Interfaces sind ja nicht ausprogrammiert, nur die Methoden-Rümpfe sind deklariert). Sonst reklamiert der Compiler. Teilweise kann man aber auch Adapter-Klassen verwenden: Sie implementieren das Interface, man kann dann aber auch nur einzelne Methoden des Interfaces nutzen. Nachteil von Adapter-Klassen: der Compiler (Java) prüft erst zur Laufzeit; ist die Methode falsch geschrieben, wirft der Java-Compiler eine Exception (Fehler).