روی خط زندگی

گشت و گذار من در هنر نرم افزار

روی خط زندگی

گشت و گذار من در هنر نرم افزار

وراثت (Inheritance)

پنجشنبه, ۲۱ اسفند ۱۳۹۳، ۰۸:۴۰ ب.ظ

شاید اصلی ترین ایده در مفاهیم شی گرایی وراثت است. با وراثت می توان یک کلاس را به چندین کلاس توسعه داد بدون آنکه کلاس اصلی ما دستخوش تغییر شود. این یکی از بهترین اشکال برای Code Reuse می باشد. وقتی یک کلاس از کلاس دیگری به ارث می رود، بدون آنکه نیاز به کد نویسی باشد، کلیه رفتار ها و ویژگی های آن کلاس را به ارث می برد (البته با توجه به دسترسی های تعریف شده برای رفتار ها، تنها رفتار هایی با سطح دسترسی public و protected به ارث می روند).


در شکل زیر کلاس های Student و Employee از کلاس Person ارث بری کرده اند. به کلاس Person می گوییم Superclass و به کلاس های Student و Employee می گوییم Subclass.


یکی از مهترین فواید استفاده از وراثت آن است که با اعمال تغییرات در کلاس پدر، تمامی کلاس های فرزند که از کلاس پدر به ارث رفته اند، بدون هیچ کاری تغییرات را دریافت می کنند.

لازم به ذکر است که در برخی از زبان ها مانند ++C امکان ارث بری از چندین کلاس وجود دارد، در واقع یک کلاس فرزند می تواند چندین پدر داشته باشد!، ولی در زبان هایی مانند #C و Java هر کلاس تنها از یک کلاس می تواند ارث بری داشته باشد و امکان وراثت چندگانه وجود ندارد. لازم به ذکر است که وراثت چندگانه علی رقم آزادی عملی که به توسعه گر می دهد، مشکلاتی را ایجاد می کند (از جمله افزایش سطح پیچیدگی یا Complexity ) که بحث آن در این مقال نمی گنجد.

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی