C++/הורשה: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Atavory (שיחה | תרומות)
אין תקציר עריכה
Atavory (שיחה | תרומות)
אין תקציר עריכה
שורה 2:
 
מאפיין בסיסי של תכנות מונחה עצמים הוא מנגנון ההורשה, שמאפשר לנו לתת פתרון ספציפי לבעיה מסויימת מתוך פתרון גנרי קיים. למשל, נתונה לנו מחלקה המתארת אוגר שיודע לאכול ולישון, ומוגדרת בצורה הבאה:
<source lang = "c++cpp">
class Hamster
{
שורה 17:
</source>
אנחנו מעוניינים ליצור מחלקה חדשה, המתארת אוגר קרב. אוגר קרב יודע לעשות כל מה שאוגר רגיל עושה, ובנוסף הוא יודע גם לתקוף אוגרים אחרים. עד עכשיו, היינו צריכים להגדיר מחלקת אוגר קרב נפרדת, דבר שגם כרוך בהמון עבודה, וגם דורש מאיתנו להעמיס את שיטת התקיפה, כדי לאפשר לאוגר הקרב לתקוף כל אוגר אחר, בין אם הוא אוגר קרב או לא. הגדרת מחלקת אוגר הקרב בלי מנגנון ההורשה תיראה בערך ככה:
<source lang = "c++cpp">
class BattleHamster
{
שורה 42:
אוגר הקרב החדש שלנו קיבל בירושה את כל התכונות של האוגר הרגיל, והוסיף להן תכונה חדשה משלו. מכאן אנחנו יכולים להגיד שאוגר קרב הוא '''סוג של אוגר''', שמסוגל לתקוף.
מילת המפתח בהורשה היא "סוג של", או "is a", מכיוון שמחלקה יורשת היא מצב מיוחד של המחלקה המורישה, כמו האוגר ואוגר הקרב.
בשפת C++CPP ניתן להרחיב את ההורשה ליותר ממחלקה אחת. לדוגמה, נגדיר מחלקת חיות סיביריות, שהמאפיין שלהם הוא היכולת להיכנס לתרדמת חורף. המחלקה תוגדר כך:
<div style="direction: ltr;">
class CSybirianAnimal