وراثت (inheritance) در برنامه‌نویسی چیست؟

به نام خدا

سلام بر دوستان ویرگولی

پیشنهاد می‌کنم مقاله شی گرایی چیست رو مطالعه کنید تا بهتر متوجه مطالب این مقاله بشید.

تا آخر این مقاله، ما موضوعات زیر رو یاد خواهیم گرفت:

1. وراثت چیست؟

2. وراثت چندگانه چیست؟

3. mro چیست؟


وراثت
وراثت

وراثت چیست؟

اول بریم سراغ یه تعریف

وراثت:

وقتی کلاس ۲ علاوه بر ویژگی‌ها و رفتار‌های کلاس ۱، خودش هم ویژگی یا رفتار‌های جدیدی رو داره؛ می‌گیم کلاس ۲ از کلاس ۱ ارث بری کرده و اینجا مفهوم وراثت معنا پیدا می‌کنه.

مثال:

تصور کنید ما یه کلاس داریم به نام خودرو. ویژگی‌ها و رفتار‌های این کلاس رو در مقاله قبلی با هم دیدیم. حالا یه کلاس دیگه داریم به نام شاسی بلند. این کلاس همه ویژگی‌های کلاس خودرو رو داره (چون خودش هم یه خودرو هست) و علاوه بر اون ویژگی‌ها و رفتار‌های دیگه‌ای هم داره. یعنی کلاس شاسی بلند از کلاس خودرو ارث بری کرده. مفهوم وراثت اینه. دیدید چه ساده

عکس زیر هم می تونه به درک بهترتون کمک کنه:

گربه و سگ از حیوان ارث بری کردن
گربه و سگ از حیوان ارث بری کردن

وراثت چندگانه چیست؟

احتمالا می‌تونید معنی این عبارت رو حدس بزنید. بریم سراغ تعریف

وراثت چندگانه:

یه کلاس از بیش از یه کلاس ارث بری بکنه. مثل عکس بالا

مثال:

تصور کنید یه کلاس داریم به نام عدد مثبت و یه کلاس داریم به نام عدد منفی. حالا اگر یه کلاس داشته باشیم به نام عدد حقیقی، این کلاس هم از کلاس عدد مثبت و هم از کلاس عدد منفی ارث بری می‌کنه و علاوه بر ویژگی و رفتار‌های اونا، ویژگی و رفتار‌های عدد صفر رو هم داره. (عدد صفر نه منفیه و نه مثبت)

عبارت mro یعنی چه؟

مفهوم mro:

عبارت Method resolution order به معنی ترتیب ارث بریه. یعنی وقتی یه کلاس از مثلا ۲ تا کلاس ارث بری می‌کنه، اول ویژگی و رفتار‌های کدوم کلاس اعمال بشه.

مثال:

۴ تا کلاس داریم به نام‌های A، B، C و D. کلاس‌های B و C از کلاس A ارث بری می‌کنن و کلاس D به ترتیب از کلاس‌های B و C ارث بری می‌کنه:

الآن اگه کلاس‌های A، B و C ویژگی مشترکی داشته باشن، کلاس D اون ویژگی رو از کدوم شون ارث بری خواهد کرد؟ مثلا ویژگی رنگ در همشون مشترکه. رنگ کلاس‌ها به ترتیب: قرمز، آبی و سبز. الآن رنگ D چی میشه؟

به ترتیب ارث بری ویژگی‌ها و رفتار ها، mro می‌گن.

امیدوارم خوب توضیح داده باشم.

ممنون که با خوندن این مقاله، همراه من بودید. اگر مشکلی وجود داشت، اون رو در بخش کامنت‌ها مطرح کنید تا به کمک هم حلش کنیم.