REPORT ZNADAR_POLIMORFISMO.
CLASS class_prgm DEFINITION ABSTRACT.
PUBLIC SECTION.
METHODS: load ABSTRACT,
save ABSTRACT.
ENDCLASS.
CLASS cl_cliente DEFINITION
INHERITING FROM class_prgm.
PUBLIC SECTION.
METHODS: load REDEFINITION,
save REDEFINITION.
ENDCLASS.
CLASS cl_cliente IMPLEMENTATION.
METHOD load.
WRITE: 'Cargar Cliente'.
ENDMETHOD.
METHOD save.
WRITE: 'Grabar Cliente'.
ENDMETHOD.
ENDCLASS.
CLASS cl_servidor DEFINITION
INHERITING FROM class_prgm.
PUBLIC SECTION.
METHODS: load REDEFINITION,
save REDEFINITION.
ENDCLASS.
CLASS cl_servidor IMPLEMENTATION.
METHOD load.
WRITE: 'Cargar Servidor'.
ENDMETHOD.
METHOD save.
WRITE: 'Grabar Servidor'.
ENDMETHOD.
ENDCLASS.
CLASS cl_control DEFINITION.
PUBLIC SECTION.
class-data: OS type REF TO class_prgm.
CLASS-METHODS:
start IMPORTING p_objeto TYPE REF TO class_prgm RETURNING VALUE(p_out) type REF TO class_prgm.
ENDCLASS.
CLASS cl_control IMPLEMENTATION.
METHOD start.
OS = p_objeto.
P_out = OS.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA: o_cliente TYPE REF TO cl_cliente,
o_servidor TYPE REF TO cl_servidor,
o_objeto type REf to class_prgm.
CREATE OBJECT: o_cliente, o_servidor.
o_objeto = cl_control=>start( o_cliente ).
o_objeto->load( ).