Sie sind auf Seite 1von 7

Einsatzgebiete fr Interfaces

Interfaces unterscheiden sich eher durch ihr Einsatzgebiet von der regulren
Vererbung. Programmiertechnisch bestehen dagegen kaum Unterschiede.
Technisch gesehen sind Interfaces nichts anderes als nicht instanziierbare
Oberklassen ohne Implementierungsteil und mit ausschlielich ffentlichen
Komponenten. Wir werden aber noch sehen, dass man mit Interfaces
Mehrfachvererbung simulieren kann.
In ABAP Objects dienen Interfaces in erster Linie dazu, einheitliche Schnittstellen
(Protokolle) zu Diensten zu definieren. Diese Dienste knnen dann von
unterschiedlichen Klassen auf verschiedene Weise aber semantikerhaltend
angeboten, also implementiert werden. Interfaces enthalten also keine
Implementierungen.
In ABAP Objects knnen in Interfaces generell dieselben Komponenten definiert
werden wie in Klassen. Um semantische Unterschiede zur regulren Vererbung
zu erkennen, bietet es sich an, sich auf folgende typische Anwendungsflle zu
konzentrieren:

Ein Interface wird wie folgt von einer Klasse implementiert:


Der Name des Interfaces wird im Definitionsteil der Klasse mit der
INTERFACES-Anweisung aufgefhrt. Diese muss innerhalb der PUBLIC
SECTION stehen, das heisst Interfaces knnen nur ffentlich implementiert
werden.
Die Interface-Methoden mssen im Implementierungsteil der Klasse
implementiert werden.
Die im Interface definierten Komponenten knnen im Implementierungsteil
der Klasse angesprochen werden.
Interface-Komponenten werden innerhalb der implementierenden Klasse ber
den vorangestellten und mit einer Tilde (~), dem Interface-Resolution-Operator,
abgeschlossenen Interface-Namen von den brigen Komponenten der Klasse
selbst unterschieden:
interface_name~component_name

Auch mit Interfaces ist Polymorphie realisierbar: ber Interface-Referenzen


knnen Methoden aufgerufen werden, wobei, je nachdem welches Objekt gerade
hinter dieser Referenz steht, unterschiedliche Implementierungen ausgefhrt
werden.
Technisch ausgedrckt wird zum Einstieg in die Suche nach der Implementierung

einer Methode nicht der statische Typ einer Referenzvariablen verwendet,


sondern
der dynamische. Bei obigem Aufruf go_partner->display_partner( ) wird also
die Klasse der Instanz, auf die go_partner tatschlich verweist, als Einstieg zur
Suche nach der Implementierung von display_partner verwendet und nicht
etwa
der statische Typ von go_partner, der ja immer REF TO lif_partner ist.
Welche Implementierung nun beim Aufruf von DISPLAY_PARTNER
ausgefhrt wird, hngt also davon ab, auf welches Objekt die Interface-Referenz
GO_PARTNER gerade verweist. Reagieren Objekte verschiedener Klassen
auf gleiche Methodenaufrufe unterschiedlich, so wird dies als Polymorphie
(griechisch fr Vielgestaltigkeit) bezeichnet.
Die Mglichkeit, Polymorphie zu betreiben, ist eine der wesentlichen Strken
von Interfaces: Ein Klient kann mit verschiedenen Klassen unabhngig von
ihrer Implementierung einheitlich umgehen. Die Suche nach der richtigen
Implementierung einer Methode bernimmt das Laufzeitsystem fr ihn.
Mit Hilfe der Polymorphie lassen sich hochgradig generische Programme
schreiben, also solche, die bei Erweiterungen um zustzliche Anwendungsflle
nicht wesentlich gendert zu werden brauchen.

Mann kann interfecae in interfeace implimentieren und einre davon


implimentieren