ירושה (Inheritance)
אז חלוקת תפקידים זה חשוב, אבל גם לדעת איך לנצל קוד שכתבתם ולא לכתוב אותו פעמיים או אפילו יותר זה גם חשוב. הנושא הזה נקרא ירושה, ובדיוק כמו בחיים האמיתיים, גם בתכנות יש לנו דרך להשתמש או להעביר קוד שכתבנו למישהו אחר, במקרה שלנו זה קלאס. כלומר ירושה בתכנות מאפשרת לנו לקחת קלאס קיים שכבר מוגדר בתוכו properties ואו methods שהם נכונים גם לקלאס החדש שאנחנו רוצים לבנות, מבלי לכתוב את אותם properties ואו methods פעם שנייה, וזה כמובן מה שמאפשר לנו code reuse.
אז גם ל-Person וגם ל-Employee יש שם פרטי ושם משפחה, ואני מכניס גם מספר כרטיס אשראי, ויתרה בבנק כאל משהו שמגדיר מבחינתי בן אדם בוגר, וגם יש לנו את ה-methods שיש לאדם בוגר כמו introduceYourself ו-makePayment, ולכן גם ל-Person וגם ל-Employee יש מכנה משותף שאותו אני יכול לשתף.
במודל הירושה, הקלאס שמהווה את הבסיס לירושה נקרא Parent / Base / Super class. הקלאסים היורשים, אשר מקבלים ומרחיבים את התכונות והמתודות מהקלאס הבסיסי, נקראים Child / Derived / Sub class. לדוגמה, אם נתייחס לקלאס Person כקלאס הבסיס, אז הוא יחשב ל-Parent / Base / Super class. במקרה שלנו, קלאס כמו Employee, שיורש מPerson, יחשב ל-Child / Derived / Sub class.
מימוש ירושה (Inheritance)
בתמונה למטה, תוכלו לראות שאנחנו יוצרים קלאס חדש בשם Employee שיורש מ-Person באמצעות המילה extends. זה אומר של-Employee יש את כל מה של-Person יש, פלוס עוד דברים נוספים שהוספנו ל-Employee כמו תפקיד (position) ומשכורת (salary).
אם תשימו לב, בתוך ה-constructor של Employee אנחנו משתמשים במילה super. באמצעות המילה הזו, אנחנו קוראים ל-constructor של Person שיאתחל את הנתונים ש-Person כבר יודע לעשות, ואז נותר לנו רק להוסיף את מה שאנחנו צריכים ב-Employee שזה position ו-salary. כך אנחנו חוסכים בקוד ושומרים על תכנות נקי ויעיל.
כשאנחנו קוראים לפונקציה introduceYourself של Employee, היא קודם כל עושה את מה ש-Person עושה (בזכות `()super.introduceYourself`), ואז מוסיפה על זה מידע נוסף שקשור ל-Employee, מה שמוביל אותנו לפולימורפיזם (Polymorphism).