דף הבית  שיעורים  הורשה וגישה  גישה בהורשה - המשך
 
גישה בהורשה - המשך
 
שינוי הגישה למשתנים בעת ההורשה ניתנת לשינוי. יש אפשרות להחזיר משתנה הנורש ע"י private או protected, חזרה לרמתו המקורית או לרמת ביניים, ע"י הכרזתו, תחת ההרשאה אליה רוצים להחזירו, כמו בדוגמא הבאה:

class Animal {
public:
 char name[32];
 int kennel;
 int days;
};

class Cat:private Animal {
protected:
 Animal::kennel;
public:
 catFood food;
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

סדר ההרשאות מהגישה הקלה ביותר לקשה ביותר הוא: protected ,public ו-private.
שים לב שניתן להחמיר את הגישה למשתנים ופונקציות כאשר יורשים מהמחלקה בה הם מוגדרים, ע"י הורשה כ-private או כ-protected, אך לא ניתן להקל את הגישה אליהם לעומת הגישה בה הם הוגדרו.
לעומת זאת, ע"י הכרזת המשתנה הנורש תחת הרשאה חדשה, ניתן להקל את הגישה אליו, אך עד לגישה שנקבעה לו בעת הגדרתו במחלקת האב (לא ניתן להעבירו לגישה קלה יותר מזו שנקבעה לו בעת הגדרתו).
בכל אופן לא ניתן להקל בדרך זו את הגישה שנקבעה למשתנה מחלקה (או פונקצית חבר) בעת הגדרתו, רק להקשות עליה.
בהורשה מרובה יש אפשרות לרשת מכל אחת ממחלקות האב, עם בקשת גישה שונה, לדוגמא:

class Base1 {
public:
 int x;
 Base1(int a): x(a) {}
};

class Base2 {
public:
 int y;
 Base2(int b): y(b) {}
};

class Sub:public Base1, private Base2 {
public:
 int z;
 Sub(int a, int b, int c):
  Base1(a), Base2(b), z(c) {}
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט