REPORT zcl_oops_test.
*----------------------------------------------------------------------*
* CLASS cl_super DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_super DEFINITION.
PUBLIC SECTION.
DATA: sum 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 = '.
WRITE: sum.
ENDMETHOD.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS cl_sub DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_sub DEFINITION INHERITING FROM cl_super.
PUBLIC SECTION.
DATA: num3 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 ='.
WRITE: mul.
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.
*----------------------------------------------------------------------*
* CLASS cl_super DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_super DEFINITION.
PUBLIC SECTION.
DATA: sum 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 = '.
WRITE: sum.
ENDMETHOD.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS cl_sub DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_sub DEFINITION INHERITING FROM cl_super.
PUBLIC SECTION.
DATA: num3 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 ='.
WRITE: mul.
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