Example:1
REPORT zcl_oops_test.
*----------------------------------------------------------------------*
* CLASS cl_polymorphism DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_polymorphism DEFINITION.
PUBLIC SECTION.
DATA: sum 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.
METHODS: calci 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.
METHODS: calci 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.
DATA: obj_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.
METHODS: emp_type ABSTRACT,
location ABSTRACT.
ENDCLASS.
CLASS zcl_emp1 DEFINITION
INHERITING FROM zcl_emp.
PUBLIC SECTION.
METHODS: emp_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.
METHODS: emp_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.
DATA: lr_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.
CLASS zcl_emp DEFINITION ABSTRACT.
PUBLIC SECTION.
METHODS: emp_type ABSTRACT,
location ABSTRACT.
ENDCLASS.
CLASS zcl_emp1 DEFINITION
INHERITING FROM zcl_emp.
PUBLIC SECTION.
METHODS: emp_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.
METHODS: emp_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.
DATA: lr_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