Anfang des Inhaltsbereichs

Einführendes Beispiel zur Vererbung Dokument im Navigationsbaum lokalisieren

Das folgende einfache Beispiel zeigt das Prinzip der Vererbung in ABAP Objects. Es beruht auf dem einführenden Beispiel zu Klassen. Eine neue Klasse counter_ten erbt von der bereits vorhandenen Klasse counter.

Beispiel

REPORT demo_inheritance.

CLASS counter DEFINITION.
  PUBLIC SECTION.
    METHODS: set IMPORTING value(set_value) TYPE i,
             increment,
             get EXPORTING value(get_value) TYPE i.
  
PROTECTED SECTION .
    DATA count TYPE i.
ENDCLASS.

CLASS counter IMPLEMENTATION.
  METHOD set.
    count = set_value.
  ENDMETHOD.
  METHOD increment.
    ADD 1 TO count.
  ENDMETHOD.
  METHOD get.
    get_value = count.
  ENDMETHOD.
ENDCLASS.

CLASS counter_ten DEFINITION INHERITING FROM counter.
  PUBLIC SECTION.
    METHODS increment
REDEFINITION .
    DATA count_ten.
ENDCLASS.

CLASS counter_ten IMPLEMENTATION.
  METHOD increment.
    DATA modulo TYPE I.
    
CALL METHOD super->increment .
    write / count.
    modulo = count mod 10.
    IF modulo = 0.
      count_ten = count_ten + 1.
      write count_ten.
    ENDIF.
  ENDMETHOD.
ENDCLASS.

DATA: count TYPE REF TO counter,
      number TYPE i VALUE 5.

START-OF-SELECTION.

   CREATE OBJECT count TYPE counter_ten .

  CALL METHOD count->set EXPORTING set_value = number.

  DO 20 TIMES.
    CALL METHOD count->increment.
  ENDDO.

Die Klasse COUNTER_TEN wird aus COUNTER abgeleitet und redefiniert die Methode INCREMENT. In COUNTER muß hierfür die Sichtbarkeit des Attributs COUNT von PRIVATE auf PROTECTED gesetzt werden. In der redefinierten Methode wird die verschattete Methode mit der Pseudoreferenz SUPER-> aufgerufen. Die redefinierte Methode spezialisiert die geerbte Methode.

Es wird ein Objekt der Unterklasse erzeugt, auf das eine Referenzvariable vom Typ der Oberklasse zeigt. Bei Ausführung der Methode INCREMENT über die Oberklassenreferenz wird die redefinierte Methode der Unterklasse ausgeführt.

Ende des Inhaltsbereichs