الوراثة تسمح لفئة (الفئة المشتقة أو الفرعية) بإعادة استخدام وتوسيع الحقول والدوال من فئة أخرى (الفئة الأساسية أو الأب). تصمِّم علاقة is-a: Dog يكون Animal.
الوراثة تسمح لفئة (الفئة المشتقة أو الفرعية) بإعادة استخدام وتوسيع الحقول والدوال من فئة أخرى (الفئة الأساسية أو الأب). تصمِّم علاقة is-a: Dog يكون Animal.
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
return f"{self.name} is eating"
class Dog(Animal): # Dog inherits everything from Animal
def bark(self): # ...and adds new behavior
return "Woof!"
d = Dog("Rex")
print(d.eat()) # "Rex is eating" → inherited, not rewritten
print(d.bark()) # "Woof!" → Dog-specific
Dog حصلت على __init__ و eat مجانًا وأضافت bark. يمكن للفئة المشتقة أن تستبدل الدوال الموروثة لتغيير السلوك.
| الفائدة | المخاطرة |
|---|---|
| إعادة استخدام الكود المشترك | الارتباط الوثيق بالفئة الأب |
| نمذجة التسلسلات الهرمية الحقيقية | الفئة الأساسية الهشة — تغييرات الأب تكسر الأطفال |
| تعدد الأشكال عبر نوع مشترك | الأشجار العميقة تصبح صعبة المتابعة |
إرشادة شائعة: فضّل التركيب على الوراثة عندما تكون العلاقة بالفعل "has-a"، وليس "is-a".
الوراثة هي أكثر ميزة OOP يساء استخدامها: من المغري استخدامها فقط لمشاركة الكود، مما يربط الفئات غير ذات الصلة.
عند استخدامها بشكل صحيح — فقط للعلاقات is-a الحقيقية — تمنحك إعادة الاستخدام بالإضافة إلى تعدد الأشكال، مما يسمح لك بمعاملة أنواع فرعية كثيرة بشكل موحد من خلال أبيهم المشترك.