الدرس 20: الركيزة الثانية لـ OOP: أساسيات الوراثة
الوراثة (Inheritance) هي آلية تكتسب من خلالها فئة خصائص وسلوكيات (حقول ودوال) فئة أخرى. وهي تعزز إعادة استخدام الكود وتنشئ علاقة "هو-نوع-من" (مثلاً: الكلب هو نوع من الثدييات).
المصطلحات
- الفئة الأب (Superclass/Parent): الفئة التي يتم التوريث منها.
- الفئة الابن (Subclass/Child): الفئة التي ترث من الأب.
تنفيذ الوراثة (extends)
في Java، تستخدم الفئة الابن الكلمة المفتاحية extends للوراثة من فئة الأب. تدعم Java الوراثة الفردية فقط (يمكن للفئة أن ترث من فئة واحدة أخرى فقط).
java // الفئة الأب public class Animal { public void eat() { System.out.println("This animal eats food."); }
public void sleep() {
System.out.println("The animal is sleeping.");
}
}
// الفئة الابن ترث الخصائص والدوال من Animal public class Dog extends Animal { public void bark() { System.out.println("Dog barks."); } }
فوائد الوراثة
- إعادة استخدام الكود: الدوال المكتوبة في الفئة الأب (مثل
eat()وsleep()) لا تحتاج إلى إعادة كتابتها في الفئة الابن (Dog). - تعدد الأشكال: يمكن معاملة كائن Dog كأنه كائن Animal (سيتم شرح ذلك لاحقاً).
الاستخدام
java Dog myDog = new Dog(); myDog.bark(); // معرفة في فئة Dog myDog.eat(); // موروثة من Animal myDog.sleep(); // موروثة من Animal
هام: المنشئات، والأعضاء الخاصة (private)، والأعضاء الثابتة (static) لا يتم توريثها بالمعنى التقليدي. الحقول الخاصة موجودة في الفئة الابن ولكن لا يمكن الوصول إليها مباشرة.