דריסת מתודות שעברו בירושה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-JavaScript של Coddy. שיעור 36 מתוך 56.
דריסת מתודה מתרחשת כאשר מחלקת בת מספקת מימוש משלה למתודה שהיא ירשה ממחלקת אב. הגרסה של מחלקת הבת "דורסה" (מחליפה) את הגרסה של מחלקת האב.
דוגמה פשוטה:
צרו מחלקת אב עם מתודה:
class Vehicle {
start() {
return "Vehicle starting...";
}
}צרו מחלקת בת שמרחיבה את מחלקת האב:
class Car extends Vehicle {
// זה דורס את המתודה start() של Vehicle
start() {
return "Car engine roaring to life!";
}
}השתמשו במחלקות:
const vehicle = new Vehicle();
const car = new Car();
console.log(vehicle.start()); // "Vehicle starting..." (מקורי)
console.log(car.start()); // "Car engine roaring to life!" (נדרס)כללים מרכזיים לדריסת הגדרות:
- אותו שם מתודה כמו במחלקת האב
- פרמטרים זהים או תואמים
- הגרסה של הילד נקראת באובייקטים של ילדים
- אין צורך במילות מפתח מיוחדות - פשוט הגדירו את המתודה
אתגר
ניתנות לך מחלקת אב Shape ומחלקת בת Circle. למחלקת האב יש מתודה calculateArea() שמחזירה 0.
המשימה שלך היא לדרוס את המתודה calculateArea() במחלקה Circle כדי לחשב את השטח האמיתי של מעגל.
הנוסחה לחישוב שטח מעגל היא: π × radius²
ב-JavaScript: Math.PI * this.radius * this.radius
נסו בעצמכם
import { Shape } from './shapes.js';
import { Circle } from './shapes.js';
// בדקו את המימוש שלכם
const myCircle = new Circle(5);
console.log(myCircle.calculateArea());
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1אובייקטים ומילת המפתח this
סקירה מהירה: אובייקטיםהוספת מתודות לאובייקטיםהבנת מילת המפתח thisפונקציות בנאימילת המפתח newאתגר סיכום7הורשה ומילת המפתח extends
הורשההקשר "הוא-סוג-של"מילת המפתח extendsהמתודה super()הורשת מאפיינים ומתודותאתגר סיכום8ארגון קוד OOP
ארגון מחלקות במודוליםתרגלו בעצמכם: קומפיילר JavaScript אונליין