שימוש ב-super
חלק מהיחידה תכנות מונחה עצמים במסלול ה-JavaScript של Coddy. שיעור 37 מתוך 56.
כשדורסים מתודה, עדיין אפשר לגשת לגרסה המקורית של מחלקת האב באמצעות super.methodName(). כך אפשר להרחיב או לשנות את ההתנהגות של מחלקת האב במקום להחליף אותה לחלוטין.
צרו מחלקת אב עם מתודה:
class Animal {
makeSound() {
return "Generic animal sound";
}
}צרו מחלקת בת שמרחיבה את מחלקת האב:
class Dog extends Animal {
makeSound() {
// קודם יש לקרוא למתודה של מחלקת האב
const parentSound = super.makeSound();
// לאחר מכן יש להרחיב אותה עם פונקציונליות נוספת
return `${parentSound}, but also Woof!`;
}
}צרו מופע של מחלקת הבת:
const myDog = new Dog();
console.log(myDog.makeSound());
// פלט: "Generic animal sound, but also Woof!"מילת המפתח super מאפשרת לך לקרוא למתודות של מחלקת האב ובו בזמן להוסיף פונקציונליות משלך במחלקת הבת.
אתגר
ניתנה לך המחלקה Shape עם המתודה calculateArea() והמחלקה Rectangle שיורשת ממנה. המשימה שלך היא לדרוס את המתודה calculateArea() בתוך Rectangle באמצעות super.
המשימה שלך היא להשלים את המתודה calculateArea() במחלקה Rectangle כדי:
- לקרוא למתודה
calculateArea()של מחלקת האב באמצעותsuperולשמור את התוצאה - לחשב את השטח בפועל של המלבן:
width × height - להחזיר מחרוזת משולבת: ההודעה של מחלקת האב + שטח המלבן. דוגמה:
Calculating area... Rectangle area: 50
נסו בעצמכם
import { Shape } from './shapes.js';
import { Rectangle } from './shapes.js';
// קוד בדיקה - אין לשנות
const rectangle = new Rectangle(5, 10);
console.log(rectangle.calculateArea()); // צפוי: "Calculating area... Rectangle area: 50"
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1אובייקטים ומילת המפתח this
סקירה מהירה: אובייקטיםהוספת מתודות לאובייקטיםהבנת מילת המפתח thisפונקציות בנאימילת המפתח newאתגר סיכום7הורשה ומילת המפתח extends
הורשההקשר "הוא-סוג-של"מילת המפתח extendsהמתודה super()הורשת מאפיינים ומתודותאתגר סיכום8ארגון קוד OOP
ארגון מחלקות במודוליםתרגלו בעצמכם: קומפיילר JavaScript אונליין