Saturday, 4 March 2017

Multiple Inheritance using Interface in ABAP OOP



REPORT  zcl_oops_test.

*----------------------------------------------------------------------*
*       INTERFACE intf1
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE intf1.

  
METHODSname.

ENDINTERFACE.                    "intf1

*----------------------------------------------------------------------*
*       INTERFACE intf2
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE intf2.

  
METHODSdetails.

ENDINTERFACE.                    "intf2

*----------------------------------------------------------------------*
*       CLASS cl_test1 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test1 DEFINITION.

  
PUBLIC SECTION.
    
INTERFACESintf1,
                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.
    
INTERFACESintf1,
                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-METHODSselect_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.

  
DATAobj1 TYPE REF TO cl_test1.
  
CREATE OBJECT obj1.
  cl_test3
=>select_nameobj1 ).
  cl_test3
=>select_detailsobj1 ).

  
DATAobj2 TYPE REF TO cl_test2.
  
CREATE OBJECT obj2.
  cl_test3
=>select_nameobj2 ).
  cl_test3
=>select_detailsobj2 ).


Output

Concept of Interface in ABAP OOP


REPORT  zcl_oops_test1.


*----------------------------------------------------------------------*
*       INTERFACE intf
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
INTERFACE intf.
  
METHODS details.
ENDINTERFACE.                    "intf

*----------------------------------------------------------------------*
*       CLASS cl_test DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test DEFINITION.
  
PUBLIC SECTION.
    
INTERFACES intf.
    
METHODS address.
  
PRIVATE SECTION.
    
DATA ph_no TYPE i.
ENDCLASS.                    "cl_test DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_test IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test IMPLEMENTATION.
  
METHOD intf~details.
    
WRITE'Name - Sandhya, Ph No - 'ph_no.
  
ENDMETHOD.                    "intf~details
  
METHOD address.
    
ADD 12345 TO ph_no.
  
ENDMETHOD.                    "Address
ENDCLASS.                    "cl_test IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS cl_test1 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test1 DEFINITION.
  
PUBLIC SECTION.
    
INTERFACES intf.
    
METHODS location.
  
PRIVATE SECTION.
    
DATA distance TYPE i.
ENDCLASS.                    "cl_test1 DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_test1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_test1 IMPLEMENTATION.
  
METHOD intf~details.
    
WRITE'Location - PSN, City - Bangalore, Distance from Home - ',distance.
  
ENDMETHOD.                    "intf~details
  
METHOD location.
    
ADD 30 TO distance.
  
ENDMETHOD.                    "location
ENDCLASS.                    "cl_test1 IMPLEMENTATION

DATAph_no1  TYPE REF TO cl_test,
      distance1  
TYPE REF TO cl_test1,
      intf1 
TYPE REF TO intf,
      intf_tab 
TYPE TABLE OF REF TO intf.

START-OF-SELECTION.

  
CREATE OBJECTph_no1distance1.


  
CALL METHODph_no1->address,
               distance1
->location.


  
APPENDph_no1 TO intf_tab,
          distance1  
TO intf_tab.

  
LOOP AT intf_tab INTO intf1.
    
CALL METHOD intf1->details.
  
ENDLOOP.




Output

Friend Class in OOP ABAP



REPORT  zcl_oops_test.


CLASS cl_friend DEFINITION DEFERRED.


*----------------------------------------------------------------------*
*       CLASS cl_new DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_new DEFINITION FRIENDS cl_friend.
  
PUBLIC SECTION.
    
METHODSname,
             
add.

  
PROTECTED SECTION.
    
METHODSph_no.

  
PRIVATE SECTION.
    
DATAobj_frnd TYPE REF TO cl_new.

    
METHODSpswrd.
ENDCLASS.                    "cl_new DEFINITION



*----------------------------------------------------------------------*
*       CLASS cl_new IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_new IMPLEMENTATION.

  
METHOD name.
    
WRITE:'Name - Sandhya'.
  
ENDMETHOD.                    "name

  
METHOD add.
    
WRITE:'Address - Bangalore'.
  
ENDMETHOD.                    "add

  
METHOD ph_no.
    
WRITE:'Ph_No - 123456789'.
  
ENDMETHOD.                    "ph_no

  
METHOD pswrd.
    
WRITE:'Pswrd - #12345@'.

  
ENDMETHOD.                    "pswrd

ENDCLASS.                    "cl_new IMPLEMENTATION


*----------------------------------------------------------------------*
*       CLASS cl_friend DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_friend DEFINITION INHERITING FROM cl_new.

  
PUBLIC SECTION.
    
METHODSdetails.


ENDCLASS.                    "cl_friend DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_friend IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_friend IMPLEMENTATION.

  
METHOD details.

    
DATAobj TYPE REF TO cl_new.
    
CREATE OBJECT obj.
    
CALL METHOD obj->name.
    
CALL METHOD obj->add.
    
CALL METHOD obj->ph_no.
    
CALL METHOD obj->pswrd.
  
ENDMETHOD.                    "details

ENDCLASS.                    "cl_friend IMPLEMENTATION

START-OF-SELECTION.

  
DATAref TYPE REF TO cl_friend.

  
CREATE OBJECT ref.

  
CALL METHOD ref->details.

Output