דף הבית  שיעורים  הורשה וגישה  הורשה - המשך
 
הורשה - המשך
 
נתבונן שוב בהגדרות המחלקות, הפעם בתוספת פונקציות:

class Animal {
public:
 char name[32];
 int kennel;
 int days;
 void PrintName();
};

class Cat:public Animal {
public:
 catFood food;
 void CatBill();
};

class Dog:public Animal {
public:
 dogFood food;
 int weight;
 void DogBill();
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

השימוש בפונקציות החבר דרך האובייקטים השונים זהה לשימוש בנתוני המחלקה.
הפונקציה PrintName נמצאת במחלקה Animal מכיוון שהיא עובדת לכל סוגי החיות. לעומת זאת הפונקציות CatBill ו-DogBill נמצאות בתתי המחלקות כי הן נוגעות לסוג חיה מסוים בלבד.
אובייקט החתול יכול לקרוא לפונקציה PrintName הנורשת ממחלקת האב, או לפונקציה CatBill הייחודית לו:

b.PrintName();
b.CatBill();
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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

class Animal {
public:
 char name[32];
 int kennel;
 int days;
 Animal();
 void PrintName(); };

class Cat:public Animal {
public:
 catFood food;
 Cat();
 void CatBill(); };

class Dog:public Animal {
public:
 dogFood food;
 int weight;
 Dog();
 void DogBill();
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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