Saturday, 4 March 2017

Polymorphism concept in ABAP OOP with example

Example:1

REPORT  zcl_oops_test.

*----------------------------------------------------------------------*
*       CLASS cl_polymorphism DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_polymorphism DEFINITION.

  
PUBLIC SECTION.
    
DATAsum TYPE i,
          sub 
TYPE i,
          mul 
TYPE i,
          num1 
TYPE i VALUE 10,
          num2 
TYPE i VALUE 5.

    
METHODS calci.

ENDCLASS.                    "cl_polymorphism DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_polymorphism IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_polymorphism IMPLEMENTATION.

  
METHOD calci.
    
sum num1 + num2.
    
WRITE:'Addition of two numbers is:'sum.
  
ENDMETHOD.                    "calci

ENDCLASS.                    "cl_polymorphism IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS cl_polymorphism_sub1 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_polymorphism_sub1 DEFINITION INHERITING FROM cl_polymorphism.

  
PUBLIC SECTION.

    
METHODScalci REDEFINITION.

ENDCLASS.                    "cl_polymorphism_sub1 DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_polymorphism_sub1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_polymorphism_sub1 IMPLEMENTATION.

  
METHOD calci.
    sub 
num1 num2.
    
WRITE:'Subtraction of two numbers is:'sub.

  
ENDMETHOD.                    "calci
ENDCLASS.                    "cl_polymorphism_sub1 IMPLEMENTATION


*----------------------------------------------------------------------*
*       CLASS cl_polymorphism_sub2 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_polymorphism_sub2 DEFINITION INHERITING FROM cl_polymorphism.

  
PUBLIC SECTION.

    
METHODScalci REDEFINITION.

ENDCLASS.                    "cl_polymorphism_sub2 DEFINITION


*----------------------------------------------------------------------*
*       CLASS cl_polymorphism_sub2 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_polymorphism_sub2 IMPLEMENTATION.

  
METHOD calci.
    mul 
num1 * num2.
    
WRITE:'Multiplication of two numbers is:'mul.

  
ENDMETHOD.                    "calci
ENDCLASS.                    "cl_polymorphism_sub2 IMPLEMENTATION

START-OF-SELECTION.

  
DATAobj_super TYPE REF TO cl_polymorphism,
        obj_sub1 
TYPE REF TO cl_polymorphism_sub1,
        obj_sub2 
TYPE REF TO cl_polymorphism_sub2.

  
CREATE OBJECT obj_super.
  
CREATE OBJECT obj_sub1.
  
CREATE OBJECT obj_sub2.

  
CALL METHOD obj_super->calci.
  
CALL METHOD obj_sub1->calci.
  
CALL METHOD obj_sub2->calci.


Output


Example:2


REPORT  ZCL_OOPS_TEST.

CLASS zcl_emp DEFINITION ABSTRACT.
  
PUBLIC SECTION.
    
METHODSemp_type ABSTRACT,
             location ABSTRACT
.
ENDCLASS.

CLASS zcl_emp1 DEFINITION
              
INHERITING FROM zcl_emp.
  
PUBLIC SECTION.
    
METHODSemp_type REDEFINITION,
             location 
REDEFINITION.
ENDCLASS.

CLASS zcl_emp1 IMPLEMENTATION.

  
METHOD emp_type.

    
WRITE'Permanent Emp'.

  
ENDMETHOD.

  
METHOD location.
    
WRITE'DTP, Bangalore.'.
  
ENDMETHOD.
ENDCLASS.

CLASS zcl_emp2 DEFINITION
              
INHERITING FROM zcl_emp.
  
PUBLIC SECTION.
    
METHODSemp_type REDEFINITION,
             location 
REDEFINITION.
ENDCLASS.

CLASS zcl_emp2 IMPLEMENTATION.
  
METHOD emp_type.
    
WRITE'Contract Emp'.
  
ENDMETHOD.

  
METHOD location.
    
WRITE'PSN, Bangalore.'.
  
ENDMETHOD.
ENDCLASS.

CLASS zcl_type_and_location DEFINITION.
  
PUBLIC SECTION.
    
CLASS-METHODS:
      
line IMPORTING im_emp
                
TYPE REF TO zcl_emp.
ENDCLASS.

CLASS zcl_type_and_location IMPLEMENTATION.
  
METHOD line.
    
WRITE'=>'.
    
CALL METHOD im_emp->emp_type.
    
WRITE'are working in'.
    
CALL METHOD im_emp->location.
  
ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  
DATAlr_permanent TYPE REF TO zcl_emp1,
        lr_contract 
TYPE REF TO zcl_emp2.

  
CREATE OBJECT lr_permanent.
  
CREATE OBJECT lr_contract.

  
CALL METHOD zcl_type_and_location=>line
    
EXPORTING
      im_emp 
lr_permanent.
  
NEW-LINE.
  
CALL METHOD zcl_type_and_location=>line
    
EXPORTING
      im_emp 
lr_contract.

Output


No comments:

Post a Comment