3

ABAP OOPS -Inheritance, Encapsulation, Polymorphism

 5 months ago
source link: https://blogs.sap.com/2024/01/05/abap-oops-inheritance-encapsulation-polymorphism/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Basic concepts of SAP ABAP objects and classes in detail. Here, we will learn about that Companying  features of object orientation in ABAP

Inheritance in SAP ABAP

  • Inheritance means to derive code functionality from one class to another
  • It means defining a class in terms of another (parent) class
  • This feature of object orientation promotes reusability of classes
  • We can use inheritance while writing a class with which to derive a parent class, by mentioning the name of parent class in the definition of derived class
  • Hence, the class that is inherited is called parent or base class or super class, and the class inheriting the base class is the child class or derived class or subclass
  • Through inheritance, an object from derived class can obtain characteristics of objects from base class
  • The keyword to use for inheritance is ‘INHERITING FROM’, just beside the class definition.

SYNTAX FOR DEFINING CLASS:

CLASS <subclass_name> DEFINITION INHERITING FROM <superclass_name>

EXAMPLE

CLASS Z_Dog DEFINITION INHERITING FROM Z_Animal.
ABAP PROGRAM EXAMPLE
Report ZDATAFLAIR_INHERITANCE.
CLASS DataflairParent Definition.
PUBLIC Section.
Data: df_public(25) Value ‘This is from parent class’.
Methods: DataflairParentM.
ENDCLASS.
CLASS DataflairChild Definition Inheriting From DataflairParent.
PUBLIC Section.
Methods: DataflairChildM.
ENDCLASS.
CLASS DataflairParent Implementation.
Method DataflairParentM.
Write /: df_public.
EndMethod. ENDCLASS.
CLASS DataflairChild Implementation.
Method DataflairChildM.
Skip.
Write /: ‘This is from child class‘, df_public.
EndMethod.
ENDCLASS.
Start-of-selection.
Data: DataflairParent Type Ref To DataflairParent,
DataflairChild Type Ref To DataflairChild.
Create Object: DataflairParent, DataflairChild.
Call Method: DataflairParent→DataflairParentM,
child→DataflairChildM.
OUTPUT:
This is from parent class
This is from child class
This is from parent class

ABAP Access Control and Inheritance

  • We know that a class can be defined as public, private, protected
  • So when a subclass inherits a superclass, there are certain rules that govern how the class can access objects and data of superclass
  • The following table shows whether a derived class has access to base class, based on whether the base class is defined as public/protected/private:
ACCESS SAME CLASS DERIVED CLASS OUTSIDE (NON-DERIVED CLASS)
PUBLIC Yes Yes Available
PRIVATE Yes Yes No
PROTECTED Yes No No

1. Public Inheritance:

    • Public data and members of superclass become public data and members of subclass
    • Protected members of superclass become protected members of subclass
    • Private members of superclass cannot be accessed by subclass

2. Private Inheritance:

    • Public members of superclass become private members of subclass
    • Protected members of superclass become private members of subclass
    • Private members of superclass cannot be accessed by subclass

3. Protected Inheritance:

Public members of superclass become protected members of subclass

    • Protected members of superclass become protected members of subclass
    • Private members of superclass cannot be accessed by subclass

Redefining Methods in Sub Class in SAP ABAP

  • We can redefine methods of superclass in subclass
  • We usually do this so that we can have subclass-specific methods
  • However, we must keep the section of redefinition of the method the same as the parent method
  • We only need to use the name of the inherited method and can access its components using ‘super’ reference.

Encapsulation in ABAP

    • Encapsulation in object orientation means wrapping data and functions together
    • This hides the data and function from the outside world, thus promoting data hiding
    • Data hiding means obstructing the view of private data and functions from unwanted third parties, and data abstraction means showing users only what they need to see
  • In ABAP, we can do encapsulation via access methods – public, private, protected.
  • We can also perform encapsulation via interfaces (which are similar to classes, the only difference is that we do not implement anything in an interface, it has to be done via class inheriting the interface, as shown in example below)

EXAMPLE OF ABAP ENCAPSULATION VIA INTERFACE

Report ZDATAFLAIR_ENCAPSULATION.
Interface df_interface.
Data text1 Type char35.
Methods Dataflairmethod1.
EndInterface.
CLASS DataflairClass1 Definition.
PUBLIC Section.
Interfaces df_interface.
ENDCLASS.
CLASS DataflairClass2 Definition.
PUBLIC Section.
Interfaces df_interface.
ENDCLASS.
CLASS DataflairClass1 Implementation.
Method df_interface~Dataflairmethod1.
df_interface~text1 = ‘DataflairClass 1 Interface method’.
Write / df_interface~text1.
EndMethod.
ENDCLASS.
CLASS DataflairClass2 Implementation.
Method df_interface~Dataflairmethod1.
df_interface~text1 = ‘DataflairClass 2 Interface method’.
Write / df_interface~text1.
EndMethod.
ENDCLASS.
Start-Of-Selection.
Data: DataflairObject1 Type Ref To DataflairClass1,
DataflairObject2 Type Ref To DataflairClass2.
Create Object: DataflairObject1, DataflairObject2.
CALL Method: DataflairObject1→df_interface~Dataflairmethod1,
DataflairObject2→df_interface~Dataflairmethod1.
OUTPUT:
DataflairClass 1 Interface method
DataflairClass 2 Interface method

Polymorphism in SAP ABAP

  • It means using one thing for different operations
  • It occurs usually in inheritance – for e.g. redefining methods which we saw under the concept of inheritance
  • Polymorphism means redefining methods to either overload them or override them
  • Overloading methods means when we use the same method name but use different parameters
  • Overriding methods means when we use the same method name and parameters, but the two methods are related via inheritance relationship

ABAP Polymorphism Example(Redefining methods)

Report ZDATAFLAIR_POLYMORPHISM.
CLASS df_class_02 Definition Abstract.
PUBLIC Section.
Methods: prgm_type Abstract,
dfapproach1 Abstract.
ENDCLASS.
CLASS df_class_02 Definition
Inheriting From df_class_01.
PUBLIC Section.
Methods: prgm_type Redefinition,
approach1 Redefinition.
ENDCLASS.
CLASS class_procedural Implementation.
Method prgm_type.
Write: ‘An apple’.
EndMethod. Method approach1.
Write: ‘a fruit’.
EndMethod. ENDCLASS.
CLASS class_OO Definition
Inheriting From class_prgm.
PUBLIC Section.
Methods: prgm_type Redefinition,
approach1 Redefinition.
ENDCLASS.
CLASS class_OO Implementation.
Method prgm_type.
Write: ‘An onion’.
EndMethod.
Method dfapproach1 .
Write: ‘a vegetable’.
EndMethod.
ENDCLASS.
CLASS class_type_approach Definition.
PUBLIC Section.
CLASS-METHODS:
start Importing df_class_01_prgm
Type Ref To class_prgm.
ENDCLASS.
CLASS class_type_approach IMPLEMENTATION.
Method start.
CALL Method df_class_01→prgm_type.
Write: is.
CALL Method df_class_01→approach1.
EndMethod.
ENDCLASS.
Start-Of-Selection.
Data: df_class_01 Type Ref To class_procedural,
df_class_02 Type Ref To class_OO.
Create Object df_class_01.
Create Object df_class_02.
CALL Method class_type_approach⇒start
Exporting
class1_prgm = df_class_01.
New-Line.
CALL Method class_type_approach⇒start
Exporting
class1_prgm = df_class_02.
OUTPUT:
An apple is a fruit
An onion is a vegetable
I hope this blog had explained basics concepts of object orientation – inheritance, polymorphism, encapsulation – which form the core of reusability, data hiding and data abstraction properties of object-oriented programming, especially in ABAP.

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK