Lets check out how we can implement Overriding in ABAP Objects. This is also known as the Redefinition of the method.
When do we need to use the Overriding:
Overriding is useful, when we want to extend the functionality of the inherited method. For example: we have a generic class of CAR and it has method DRIVE. We derived a subclass, say COROLLA, from that class. Now, we need to change the functionality in DRIVE method of the subclass COROLLA. In this situation we can “Redefine” the method DRIVE. This redefinition of the method is called Overriding.
UML
UML diagram for the demo application:
Code Lines
In ABAP, we have extension REDEFINTION of keyword METHODS to be able to implement the Overriding functionality.
*&---------------------------------------------------------------------*
*& Report ZTEST_NP_OVERRIDING
*&
*&---------------------------------------------------------------------*
REPORT ztest_overriding.
*
*----------------------------------------------------------------------*
* Definition of CAR class
*----------------------------------------------------------------------*
CLASS lcl_car DEFINITION.
PUBLIC SECTION.
METHODS: drive,
Color.
ENDCLASS. "LCL_CAR DEFINITION
*
*----------------------------------------------------------------------*
* Implementation of CAR Class
*----------------------------------------------------------------------*
CLASS lcl_car IMPLEMENTATION.
METHOD drive.
WRITE: / 'You are driving a Car'.
ENDMETHOD. "drive
METHOD COLOR.
WRITE: / 'Your car has BLUE color'.
ENDMETHOD.
ENDCLASS. "LCL_CAR IMPLEMENTATION
*
*----------------------------------------------------------------------*
* Definition of COROLLA - Inheriting from CAR class
*----------------------------------------------------------------------*
CLASS lcl_corolla DEFINITION INHERITING FROM lcl_car.
PUBLIC SECTION.
METHODS: drive REDEFINITION.
ENDCLASS. "LCL_COROLLA DEFINITION
*
*----------------------------------------------------------------------*
* Implementation of COROLLA
*----------------------------------------------------------------------*
CLASS lcl_corolla IMPLEMENTATION.
* Here we are overriding the functionality of the drive method.
* We are adding some functionality which are specific to COROLLA class
METHOD drive.
CALL METHOD super->drive.
WRITE: / 'which is Corolla',
/ 'Do you like it?'.
ENDMETHOD. "drive
ENDCLASS. "LCL_COROLLA IMPLEMENTATION
*
START-OF-SELECTION.
*
* Object for COROLLA
DATA: lo_corolla TYPE REF TO lcl_corolla.
CREATE OBJECT lo_corolla.
CALL METHOD lo_corolla->drive.
CALL METHOD lo_corolla->color.
Output of this Code snippet will be like:
best code i have ever seen . thanks
minal rav
(abap1942@gmail.com)
[…] we have seen in Overriding or Redefinition, it allows us to change the behavior of the instance method at runtime as long as we have redefined […]
[…] ABAP Objects: Overriding (Redefinition) […]