Saturday, 4 March 2017

Narrrow casting and Wide Casting in ABAP OOPs


REPORT  zcl_oops_test.

*----------------------------------------------------------------------*
*       CLASS cl_super DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_super DEFINITION.
  
PUBLIC SECTION.

    
DATAsum TYPE i,
          mul 
TYPE i.

    
METHODS:
      calci 
IMPORTING num1 TYPE i
                     num2 
TYPE i.

ENDCLASS.                   

*----------------------------------------------------------------------*
*       CLASS cl_super IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_super IMPLEMENTATION.
  
METHOD calci.
    
sum num1 + num2.

    
WRITE:'Addition of two numbers = '.
    
WRITEsum.
  
ENDMETHOD.                   
ENDCLASS.                    

*----------------------------------------------------------------------*
*       CLASS cl_sub DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_sub DEFINITION INHERITING FROM cl_super.
  
PUBLIC SECTION.
    
DATAnum3 TYPE i.
    
METHODS:
    calci 
REDEFINITION.

ENDCLASS.                    

*----------------------------------------------------------------------*
*       CLASS cl_sub IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_sub IMPLEMENTATION.
  
METHOD calci.
    mul 
num1 * num2 * num3.
    
WRITE:'multiplication of three numbers ='.
    
WRITEmul.
  
ENDMETHOD.                   
ENDCLASS.                    

DATA:
  obj_super  
TYPE REF TO cl_super,
  obj_sub    
TYPE REF TO cl_sub,
  obj1_super 
TYPE REF TO cl_super.

START-OF-SELECTION.
  
CREATE OBJECT obj_super.
  
CREATE OBJECT obj_sub.
  
CREATE OBJECT obj1_super.

  
CALL METHOD obj_super->calci
    
EXPORTING
      num1 
10
      num2 
10.


******Narrow casting
  obj_sub
->num3 5.
  obj_super 
obj_sub


  
CALL METHOD obj_super->calci
    
EXPORTING
      num1 
10
      num2 
5.


****** Wide casting
  obj_super ?= obj1_super
.

  
CALL METHOD obj_super->calci
    
EXPORTING
      num1 
10
      num2 
10.


Output


No comments:

Post a Comment