* Einfache Klasse für Demo von Vererbung von Oberklasse an Unterklasse
* Methodenredefinition, Vererbungshierarchie
* Oberklasse
CLASS lcl_auto DEFINITION.
PUBLIC SECTION.
* Instanzkonstruktor
METHODS:
constructor
IMPORTING
i_name TYPE string.
* funktionale Instanzmethode, gibt Namen zurück
METHODS:
get_name
RETURNING VALUE(rv_name) TYPE string.
* funktionale Instanzmethode, gibt Ergebnis zurück
METHODS:
get_type_and_name
RETURNING VALUE(rv_type_name) TYPE string.
PROTECTED SECTION.
* funktionale Instanzmethode, ist nur innerhalb der Vererbungshierarchie sichtbar
METHODS:
get_type
RETURNING VALUE(rv_type) TYPE string.
PRIVATE SECTION.
DATA: gv_name TYPE string.
ENDCLASS.
CLASS lcl_auto IMPLEMENTATION.
METHOD constructor.
gv_name = i_name.
ENDMETHOD.
METHOD get_name.
rv_name = gv_name.
ENDMETHOD.
METHOD get_type_and_name.
* Aufruf der verdeckten Klassen-Funktion über me-> (kann auch weggelassen werden)
rv_type_name = |{ me->get_type( ) }: { gv_name }|.
ENDMETHOD.
METHOD get_type.
rv_type = 'AUTO'.
ENDMETHOD.
ENDCLASS.
* Unterklasse lcl_kombi, erbt von lcl_auto
CLASS lcl_kombi DEFINITION INHERITING FROM lcl_auto.
PROTECTED SECTION.
* Methode der Oberklasse wird überschrieben
METHODS:
get_type REDEFINITION.
ENDCLASS.
CLASS lcl_kombi IMPLEMENTATION.
METHOD get_type.
* Aufruf der Funktion der Oberklasse über "super"
rv_type = |{ super->get_type( ) } -> KOMBI|.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
* Kombi erzeugen
DATA(o_kombi) = NEW lcl_kombi( 'Audi A3' ).
* Methode der Klasse lcl_auto auftrufen
WRITE: / o_kombi->get_name( ).
* Methode der Klasse lcl_kombi auftrufen
WRITE: / o_kombi->get_type_and_name( ).