REPORT zcl_oops_test.
*----------------------------------------------------------------------*
* INTERFACE intf1
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE intf1.
METHODS: name.
ENDINTERFACE. "intf1
*----------------------------------------------------------------------*
* INTERFACE intf2
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE intf2.
METHODS: details.
ENDINTERFACE. "intf2
*----------------------------------------------------------------------*
* CLASS cl_test1 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test1 DEFINITION.
PUBLIC SECTION.
INTERFACES: intf1,
intf2.
ENDCLASS. "cl_test1 DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_test1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test1 IMPLEMENTATION.
METHOD intf1~name.
WRITE: / 'Sandhya'.
ENDMETHOD. "intf1~name
METHOD intf2~details.
WRITE: / 'Location - CG, Bangalore'.
ENDMETHOD. "intf2~details
ENDCLASS. "cl_test1 IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS cl_test2 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test2 DEFINITION.
PUBLIC SECTION.
INTERFACES: intf1,
intf2.
ENDCLASS. "cl_test2 DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_test2 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test2 IMPLEMENTATION.
METHOD intf1~name.
WRITE: / 'Country - india'.
ENDMETHOD. "intf1~name
METHOD intf2~details.
WRITE: / 'Language - English'.
ENDMETHOD. "intf2~details
ENDCLASS. "cl_test2 IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS cl_test3 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test3 DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: select_name IMPORTING n1 TYPE REF TO intf1,
select_details IMPORTING d1 TYPE REF TO intf2.
ENDCLASS. "cl_test3 DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_test3 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test3 IMPLEMENTATION.
METHOD select_name.
n1->name( ).
ENDMETHOD. "select_name
METHOD select_details.
d1->details( ).
ENDMETHOD. "select_details
ENDCLASS. "cl_test3 IMPLEMENTATION
START-OF-SELECTION.
DATA: obj1 TYPE REF TO cl_test1.
CREATE OBJECT obj1.
cl_test3=>select_name( obj1 ).
cl_test3=>select_details( obj1 ).
DATA: obj2 TYPE REF TO cl_test2.
CREATE OBJECT obj2.
cl_test3=>select_name( obj2 ).
cl_test3=>select_details( obj2 ).
*----------------------------------------------------------------------*
* INTERFACE intf1
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE intf1.
METHODS: name.
ENDINTERFACE. "intf1
*----------------------------------------------------------------------*
* INTERFACE intf2
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE intf2.
METHODS: details.
ENDINTERFACE. "intf2
*----------------------------------------------------------------------*
* CLASS cl_test1 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test1 DEFINITION.
PUBLIC SECTION.
INTERFACES: intf1,
intf2.
ENDCLASS. "cl_test1 DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_test1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test1 IMPLEMENTATION.
METHOD intf1~name.
WRITE: / 'Sandhya'.
ENDMETHOD. "intf1~name
METHOD intf2~details.
WRITE: / 'Location - CG, Bangalore'.
ENDMETHOD. "intf2~details
ENDCLASS. "cl_test1 IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS cl_test2 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test2 DEFINITION.
PUBLIC SECTION.
INTERFACES: intf1,
intf2.
ENDCLASS. "cl_test2 DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_test2 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test2 IMPLEMENTATION.
METHOD intf1~name.
WRITE: / 'Country - india'.
ENDMETHOD. "intf1~name
METHOD intf2~details.
WRITE: / 'Language - English'.
ENDMETHOD. "intf2~details
ENDCLASS. "cl_test2 IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS cl_test3 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test3 DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: select_name IMPORTING n1 TYPE REF TO intf1,
select_details IMPORTING d1 TYPE REF TO intf2.
ENDCLASS. "cl_test3 DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_test3 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test3 IMPLEMENTATION.
METHOD select_name.
n1->name( ).
ENDMETHOD. "select_name
METHOD select_details.
d1->details( ).
ENDMETHOD. "select_details
ENDCLASS. "cl_test3 IMPLEMENTATION
START-OF-SELECTION.
DATA: obj1 TYPE REF TO cl_test1.
CREATE OBJECT obj1.
cl_test3=>select_name( obj1 ).
cl_test3=>select_details( obj1 ).
DATA: obj2 TYPE REF TO cl_test2.
CREATE OBJECT obj2.
cl_test3=>select_name( obj2 ).
cl_test3=>select_details( obj2 ).
Output