הורשת מאפיינים ומתודות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-JavaScript של Coddy. שיעור 28 מתוך 56.
כאשר מחלקה יורשת ממחלקה אחרת, היא יורשת את כל המאפיינים והמתודות של מחלקת האב. פירוש הדבר שלמחלקות הבנות יש גישה אוטומטית לכל מה שמוגדר במחלקת האב.
בואו ניצור מחלקת אב עם מאפיינים ומתודות:
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}
eat() {
return `${this.name} is eating`;
}
sleep() {
return `${this.name} is sleeping`;
}
}עכשיו, ניצור מחלקת צאצא שיורשת מ־Animal:
class Dog extends Animal {
constructor(name, age, breed) {
super(name, age);
this.breed = breed;
}
}צרו מופע של המחלקה Dog:
const rex = new Dog("Rex", 3, "German Shepherd");כעת, אף על פי שלא הגדרנו את eat() ואת sleep() במחלקה Dog, עדיין אפשר להשתמש בשיטות האלה:
console.log(rex.eat()); // פלט: Rex אוכל
console.log(rex.sleep()); // פלט: Rex ישןואנחנו יכולים לגשת לכל המאפיינים שעברו בירושה:
console.log(rex.name); // פלט: Rex
console.log(rex.age); // פלט: 3
console.log(rex.breed); // פלט: German Shepherdאתגר
צרו מחלקת Cake שמרחיבה את Dessert וייצאו אותה. למחלקת Cake צריכים להיות:
- כל המאפיינים והשיטות שעוברים בירושה מ-Dessert
- מאפיין חדש
flavor - שיטה חדשה
addCandles()שמחזירה מחרוזת “Added candles to ${this.name}!”
נסו בעצמכם
import { Dessert } from './desserts.js';
import { Cake } from './desserts.js';
// קוד בדיקה - אין לשנות
const myCake = new Cake("Birthday Cake", 300, "Chocolate");
console.log(myCake.describe()); // אמור להדפיס "Birthday Cake has 300 calories"
console.log(myCake.flavor); // אמור להדפיס "Chocolate"
console.log(myCake.addCandles()); // אמור להדפיס "Added candles to Birthday Cake!"השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1אובייקטים ומילת המפתח this
סקירה מהירה: אובייקטיםהוספת מתודות לאובייקטיםהבנת מילת המפתח thisפונקציות בנאימילת המפתח newאתגר סיכום7הורשה ומילת המפתח extends
הורשההקשר "הוא-סוג-של"מילת המפתח extendsהמתודה super()הורשת מאפיינים ומתודותאתגר סיכום8ארגון קוד OOP
ארגון מחלקות במודוליםתרגלו בעצמכם: קומפיילר JavaScript אונליין