Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9069

How can a parent class access public and protected methods/variables of child class?

$
0
0

We can access the public, protected and private members of parent class in sub classes/child class. But public class can access the protected and public members of child class as well. How to achieve this?

 

 

*&---------------------------------------------------------------------*

*& Report  ZSR_TEST

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

 

 

REPORT  zsr_test.

 

 

*----------------------------------------------------------------------*

*       CLASS parent DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS child DEFINITION DEFERRED.

*----------------------------------------------------------------------*

*       CLASS parent DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS parent DEFINITION FRIENDS child.

 

 

   PUBLIC SECTION.

     DATA: v_pub TYPE char40 VALUE 'Public variable in Parent class'.

     METHODS: m_parent.

 

 

   PROTECTED SECTION.

     DATA: v_pro TYPE char40 VALUE 'Protected variable in Parent class'.

 

 

   PRIVATE SECTION.

     DATA: v_pri TYPE char40 VALUE 'Private variable in Parent class'.

 

 

ENDCLASS.                    "parent DEFINITION

 

 

*----------------------------------------------------------------------*

*       CLASS parent IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS parent IMPLEMENTATION.

 

 

   METHOD m_parent.

     WRITE: / 'Method - M_PARENT :-',

            / 'Parent Class Attributes are as follows: ',

            / '=======================================',

            / v_pub,

            / v_pro,

            / v_pri.

     SKIP 2.

    

*     CALL METHOD m_child.

   ENDMETHOD.                    "m_parent

 

 

ENDCLASS.                    "parent IMPLEMENTATION

 

 

*----------------------------------------------------------------------*

*       CLASS child DEFINITION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS child DEFINITION INHERITING FROM parent.

 

 

   PUBLIC SECTION.

     METHODS m_child.

     DATA: c_pub TYPE char40 VALUE 'Hello'.

 

 

 

 

   PROTECTED SECTION.

   PRIVATE SECTION.

 

 

ENDCLASS.                    "child DEFINITION

 

 

*----------------------------------------------------------------------*

*       CLASS child IMPLEMENTATION

*----------------------------------------------------------------------*

*

*----------------------------------------------------------------------*

CLASS child IMPLEMENTATION.

 

 

 

 

 

 

   METHOD m_child.

 

 

     DATA oref TYPE REF TO parent.

     CREATE OBJECT oref.

     WRITE  oref->v_pri.

 

 

     WRITE: / 'Method - M_CHILD :-',

            / 'Child class can access all Public attributes from Parent',

            / '========================================================',

            / v_pub,

            / v_pro.

     "/ v_pri. Private data can't be accessed from Child

     SKIP.

 

 

     v_pub = 'Public has been changed in Child class'.

     v_pro = 'Protected has been changed in Child class'.

 

 

     WRITE: / 'Changed Public & Protected attributes:',

           / '======================================',

           / v_pub,

           / v_pro.

*           / v_pri.

 

 

   ENDMETHOD.                    "m_child

 

 

ENDCLASS.                    "child IMPLEMENTATION

 

 

START-OF-SELECTION.

   DATA: o_parent TYPE REF TO parent,

         o_child TYPE REF TO child.

 

 

   CREATE OBJECT: o_parent, o_child.

 

 

   CALL METHOD: o_parent->m_parent,

               o_child->m_child.

 

 

   o_parent->v_pub = 'Public data is changed again by Sandip.'.

 

 

   SKIP 2.

   WRITE: / 'Public data can be changed outside the Class:',

          / '=============================================',

          / o_parent->v_pub.

 

Regards,

Gopa


Viewing all articles
Browse latest Browse all 9069

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>