Anfang des Inhaltsbereichs

Vorgehensweisen Klassen mit Interfaces erweitern  Dokument im Navigationsbaum lokalisieren

Interfaces stellen Ergänzungen zu Klassendefinitionen dar und weisen eine einheitliche Schnittstelle zu den Objekten aus. Im Gegensatz zu Klassen können keine Instanzen von Interfaces gebildet werden. Dafür können Klassen Interfaces implementieren, indem sie alle Methoden der Interfaces implementieren. Diese können dann sowohl über die Klassen- als auch über die Interface-Referenz angesprochen werden.
Verschiedene Klassen können ein und dasselbe Interface unterschiedlich implementieren, indem sie die Methoden verschieden implementieren. Interfaces bilden somit auch eine Grundlage für den Polymorphysmus in ABAP Objects.

Voraussetzungen

Sowohl die definierende Klasse als auch das Interface sind bereits im Class Builder angelegt.

Vorgehensweise

  1. Wählen Sie die definierende Klasse aus und wechseln Sie in den Class Editor.
  2. Wählen Sie im Änderungsmodus den Tabreiter Interfaces.
  3. Um Interfaces zu einer Klasse hinzuzufügen, machen Sie folgende Angaben:

    - Interface
    Angabe des Interface-Namens. Mit der Eingabetaste veranlassen Sie eine Eintragsprüfung in der Klassenbibliothek. Eine Auflistung aller bestehenden Interfaces erhalten Sie über die Wertehilfetaste.

    - Abstrakt
    Markieren Sie das Ankreuzfeld nur, wenn es sich bei der definierenden Klasse um eine abstrakte Klasse handelt. Die Kennzeichnung hat zur Folge, daß alle Instanzmethoden des Interfaces die Eigenschaft
    ABSTRACT erhalten. Die Implementierung dieser Interface-Methoden darf daher nicht in der definierenden Klasse erfolgen. Statt dessen müssen die abgeleiteten Klassen alle Interface-Methoden implementieren.

    - Final
    Markieren Sie das Ankreuzfeld, so hat dies zur Folge, daß alle Instanzmethoden des Interfaces die Eigenschaft
    FINAL erhalten. Alle Interface-Methoden dürfen dann bei Klassenvererbung nicht weiter in den Unterklassen redefiniert werden.

    - Nur modelliert
    Ein gesetztes Flag bewirkt, daß kein Eintrag im Class-Pool erfolgt. Auf die Komponente kann zur Laufzeit nicht zugegriffen werden.
  4. Wiederholen Sie gegebenenfalls die bisherige Vorgehensweise für weitere Interfaces.

    Beispiel:
    Diese Grafik wird im zugehörigen Text erklärt

    Falls ein eingefügtes Interface geschachtelt ist, werden nach der Eintragsprüfung alle Komponenten-Interfaces der Schachtelungshierarchie angezeigt.
  5. Sichern Sie Ihre Eingaben.

Hinweis

Sie können für ausgewählte Instanzmethoden der aufgenommenen Interfaces die Eigenschaft ABSTRACT bzw. FINAL vergeben. Positionieren Sie zu diesem Zwecke den Cursor auf die gewünschte Interface-Methode in der Methodenanzeige der erweiterten Klasse und verzweigen Sie dann über Diese Grafik wird im zugehörigen Text erklärt zur Detailanzeige der ausgewählten Methode.

Wurde ferner ein Interface-Attribute in die Klasse aufgenommen, so können Sie in der Attributanzeige der erweiterten Klasse den Initialwert zum Attribut vergeben.

Ergebnis

Sie haben die Komponenten der Klasse um Interfaces erweitert. Die hinzugefügten Interfaces werden im Definitionsteil der Klasse hinter der Anweisung INTERFACES im Class-Pool aufgeführt.
Alle in der Interfacedefinition aufgeführten Methoden können nun innerhalb der Klasse implementiert werden, sofern Sie das Interface nicht als Abstrakt gekennzeichnet haben. Die im Interface definierten Komponenten (Attribute, Methoden, Ereignisse) erscheinen in der Klasse in der Form: <Interface Name>~<Komponentenname>
Es wird damit sichergestellt, daß keine Namenskonflikte mit Klassenkomponenten auftreten.

 

Hinweis

Zu allen Komponenten der Interfaces können Sie Alias-Namen als Abkürzungen für die vollständigen Namen einführen. Klicken Sie hierfür auf den Tabreiter Aliases und geben Sie die jeweiligen Alias-Namen an. Zusätzlich zum Namen haben Sie die Möglichkeit die Sichtbarkeit (PUBLIC, PROTECTED, PRIVATE) zu vergeben und damit die Verwender von Alias-Namen einzuschränken.

Siehe auch:

Methoden implementieren

Unterklassen erstellen

Interfaces schachteln