דף הבית >> הורשה>> גישה למחלקת בסיס>> הורשה וחברים מוגנים>>הורשת מחלקת בסיס מוגנת

הורשת מחלקת בסיס מוגנת

ישנה אפשרות להוריש מחלקת בסיס מוגנת . כשזה נעשה כל החברים הציבוריים ומוגנים של מחלקת הבסיס הופכים לחברים מוגנים במחלקה הנגזרת , לדוגמה .

#include <iostream.h>

class base  {
protected:
           int  i , j ; //private to base , accessible by derived
public:
           void setij ( int a ,int b )  {i = a  ;  j= b; }
           void showij ( )  {cout  <<  i <<  "  "  <<  j  <<  " \n " ; }
};
// inherit base as protected.
class derived : protected base  {
           int k;
public:
//derived may access base's i and j  and setij ().
           void  setk ( )  { setij ( 10 , 12 ) ; k =  i  *  j ; }  
//may access showij ( ) here 
           void showall ( )  {cout << k <<  "  " ;  showij ( ) ; }
};

int main ( )
{
   derived  ob ;
   ob.setij ( 2 , 3 ) ; //illegal ,setij ( ) is protected member of derived
   ob.setk ( ) ; //ok ,public member of derived 
   ob.showall ( ) ;//ok ,public member of derived
   ob.showij ( ) ; //illegal ,showij ( ) is protected member of derived
   return 0 ;
}


כשאתה קורה את הערות אתה יכול לראות ,שאפילו ש ( )setij ו ( )showij הם חברים ציבוריים במחלקת הבסיס,הם הופכים לחברים מוגנים במחלקה הנגזרת ,כשהיא מורשת ממחלקת הבסיס כמוגנת.הכוונה היא שהם לא יהיו נגישים בתוך ה ( )main.

הורשה של מס מחלקות בסיס.

אפשרי למחלקה נגזרת לרשת משניים או יותר מחלקות בסיס,לדוגמה :

#include <iostream.h>
class base1  {
protected:
           int  x;
public:
           void showx ( )  { cout  <<  x  << " \n "; }
};

class base 2  {
protected :
           int y ;
public:
           void showy  ( ) { cout <<  y  <<  " \n " ; }
};

//inherit multiple base classes .
class derived : public basee1 , public base2  {
public:
           void set (int i , int j )   { x = i  ; y = j ;}
};

int main ( )
{
           derived ob ;
           ob.set( 10, 20 );  //provided by derived 
           ob.showx  ( ) ; //from base1
           ob.showy( ) ; //from base2
           return 0;
}
הקודם
הבא