Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

إعادة تعريف الدوال الموروثة

جزء من قسم Object Oriented Programming في رحلة JavaScript على Coddy — الدرس 36 من 56.

تجاوز الدوال (Method overriding) هو عندما توفر الفئة الابنة تنفيذها الخاص لدالة ورثتها من الفئة الأب. نسخة الابن "تتجاوز" (تستبدل) نسخة الأب.

مثال بسيط:

أنشئ فئة أصل (parent class) مع طريقة (method):

class Vehicle {
  start() {
    return "Vehicle starting...";
  }
}

أنشئ فئة تابعة (child class) ترث من الفئة الأب (parent):

class Car extends Vehicle {
  // هذا يتجاوز (OVERRIDES) طريقة 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!" (تم تجاوزه)

القواعد الأساسية لإعادة التعريف (Overriding):

  1. نفس اسم الدالة كما في الفئة الأب
  1. نفس المعاملات أو معاملات متوافقة
  1. يتم استدعاء نسخة الابن على كائنات الابن
  1. لا توجد كلمات مفتاحية خاصة مطلوبة - فقط قم بتعريف الطريقة
challenge icon

التحدي

لقد تم إعطاؤك فئة أب Shape وفئة ابن Circle. تمتلك الفئة الأب طريقة calculateArea() تُرجع 0.

مهمتك هي تجاوز طريقة calculateArea() في فئة Circle لحساب المساحة الفعلية للدائرة.

صيغة مساحة الدائرة هي: π × radius²
في JavaScript: Math.PI * this.radius * this.radius

ورقة مرجعية

يحدث تجاوز الطريقة (Method overriding) عندما توفر الفئة الابنة تنفيذها الخاص لطريقة موروثة من الفئة الأب. تحل نسخة الابنة محل نسخة الأب.

مثال:

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!"

القواعد الأساسية:

  • استخدم نفس اسم الطريقة مثل الأب
  • استخدم نفس المعاملات أو معاملات متوافقة
  • يتم استدعاء نسخة الابنة على كائنات الابنة
  • لا حاجة لكلمات مفتاحية خاصة - فقط قم بتعريف الطريقة في الفئة الابنة

جرّب بنفسك

import { Shape } from './shapes.js';
import { Circle } from './shapes.js';

// اختبر تنفيذك
const myCircle = new Circle(5);
console.log(myCircle.calculateArea());
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming