המתודה super()
חלק מהיחידה תכנות מונחה עצמים במסלול ה-JavaScript של Coddy. שיעור 27 מתוך 56.
המתודה super() יוצרת ומאתחלת את האובייקט באמצעות הבנאי של מחלקת האב. חובה לקרוא לה לפני שאפשר להוסיף מאפיינים כלשהם למחלקת הבת.
חשוב על זה כך: מחלקת האב בונה את היסודות של האובייקט, ו־super() אומרת "בנה תחילה את היסודות האלה" לפני שמחלקת הבת מוסיפה תכונות משלה.
בואו נסתכל על הדוגמה. צרו מחלקת אב:
class Employee {
constructor(name) {
this.name = name;
}
}כעת צרו מחלקת בת שמרחיבה את מחלקת האב:
class Manager extends Employee {
constructor(name, department) {
super(name); // קרא לבנאי של מחלקת האב עם name
this.department = department;
}
}מה קורה כאן:
constructor(name, department)- Manager צריך גם שם וגם מחלקהsuper(name)- מעביר אתnameלבנאי של Employee
this.department- מגדיר את המאפיין הייחודי של Manager
כך נוצר Manager שיש לו גם מאפיינים שעברו בירושה (name) וגם מאפיינים משלו (department)!
יוצרים מופע של מחלקת הבת:
const myManager = new Manager("Sarah", "Engineering");
console.log(myManager.name); // "Sarah"
console.log(myManager.department); // "Engineering"יש לקרוא למתודה super() לפני השימוש ב-this בבנאי של מחלקה נגזרת. אם לא תקרא למתודה super(), JavaScript תזרוק שגיאת הפניה.
אתגר
בהינתן מחלקת Salad שמרחיבה את Meal. לסלט צריכים להיות גם שם וגם מרכיבים.
המשימה שלך היא להשלים את הבנאי של מחלקת Salad על ידי:
- קריאה ל־
super()עם מאפיין השם - הגדרת המאפיין
ingredients
נסו בעצמכם
import { Meal } from './classes.js';
import { Salad } from './classes.js';
// קוד בדיקה - אין לשנות
const salad = new Salad("Caesar", ["lettuce", "croutons", "cheese"]);
console.log(salad.name); // אמור להדפיס "Caesar"
console.log(salad.ingredients); // אמור להדפיס ["lettuce", "croutons", "cheese"]השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1אובייקטים ומילת המפתח this
סקירה מהירה: אובייקטיםהוספת מתודות לאובייקטיםהבנת מילת המפתח thisפונקציות בנאימילת המפתח newאתגר סיכום7הורשה ומילת המפתח extends
הורשההקשר "הוא-סוג-של"מילת המפתח extendsהמתודה super()הורשת מאפיינים ומתודותאתגר סיכום8ארגון קוד OOP
ארגון מחלקות במודוליםתרגלו בעצמכם: קומפיילר JavaScript אונליין