وراثت و چندشکلی
وراثت (Inheritance) چیست؟
- یک کلاس (فرزند/Child) میتونه ویژگیها و متدهای کلاس دیگه (والد/Parent) رو به ارث ببره
- هدف: جلوگیری از تکرار کد، سازماندهی سلسلهمراتبی
تعریف وراثت
Rex makes a sound.
Dog(Animal)یعنیDogفرزندAnimalهست
Override کردن متد (بازنویسی)
- کلاس فرزند میتونه متد کلاس والد رو با رفتار متفاوت بازنویسی کنه
Rex says: Woof!
استفاده از super()
- برای فراخوانی متد کلاس والد از داخل کلاس فرزند (بدون بازنویسی کامل)
Rex makes a sound.
Rex says: Woof!
چندشکلی (Polymorphism) چیست؟
- یعنی اشیاء از کلاسهای مختلف، با همون نام متد، رفتار متفاوتی نشون بدن
- کد میتونه با اشیاء مختلف به یک شکل کار کنه، بدون اینکه نوع دقیقشون رو بدونه
Rex says: Woof!
Whiskers says: Meow!
- همهی متد
speak()رو یکسان صدا زدیم، ولی هرکدوم رفتار خودشون رو دارن
بررسی رابطه کلاسها
| تابع | کار |
|---|---|
isinstance(obj, Class) |
آیا شیء نمونهای از این کلاس (یا فرزندانش) هست |
issubclass(Child, Parent) |
آیا این کلاس فرزند اون کلاسه |
True
True
وراثت چندگانه (Multiple Inheritance) — اشاره کوتاه
- پایتون اجازه میده یک کلاس از چند کلاس ارث ببره
نکته: وراثت چندگانه قدرتمنده ولی میتونه پیچیدگی ایجاد کنه (ترتیب جستجوی متدها — MRO)؛ فعلاً فقط آشنایی کافیه.