وراثت Inheritance
وراثت یا Inheritance چیست؟
وراثت (Inheritance) اصطلاحی در حوزه برنامهنویسی شئگراست که در آن یک کلاس یا شئ بر مبنای یک کلاس یا شئ دیگر ساخته میشود و ویژگیها و رفتارهای آن را به ارث میبرد. در حوزهی کلاسها، به کلاس مبنا که از آن ارث برده میشود ابرکلاس (Super Class)، کلاس پایه (Base Class) یا کلاس والد (Parent Class) گفته میشود و به کلاسی که از ابرکلاس ارث میبرد زیرکلاس (Subclass)، کلاس فرزند (Child Class) یا کلاس مشتق شده (Derived Class) اطلاق میشود.
انواع مختلفی از وراثت وجود دارد که بسته به زبانهای گوناگون ممکن است برخی از آنها پشتیبانی نشود. در وراثت یگانه (Single Inheritance)، زیرکلاس ویژگیها را تنها از یک ابرکلاس به ارث میبرد، اما در وراثت چندگانه (Multiple Inheritance) هر زیرکلاس میتواند چندین ابرکلاس داشته باشد و ویژگیها و رفتارها را از تمام آن ابرکلاسها به ارث ببرد. وراثت چندسطحی (Multilevel Inheritance) نیز نوع دیگری از وراثت است که در آن یک کلاس (مانند C) از کلاس دیگری (مانند B) ارث میبرد که آن کلاس (در اینجا B) خودش فرزند کلاس دیگری (مانند A) میباشد.
در وراثت، یک زیرکلاس موجودیتهایی (نظیر متغیرها یا توابع عضو) را از ابرکلاس یا ابرکلاسهای خود به ارث میبرد. در برخی از زبانهای برنامه نویسی با افزودن کلمههای کلیدی خاصی میتوان یک کلاس را غیرقابل ارثبری نمود. به عبارت دیگر چنین کلاسهایی نمیتوانند فرزند (یا زیرکلاس) داشته باشند. در حالت طبیعی، زیرکلاسها میتوانند تابعهای عضو ابرکلاس خود را با یک تابع هم نام که دارای همان نوع پارامترها باشد جایگزین نمایند (به این فرایند Method Overriding میگویند و نوع مقدار برگشتی آن در صورت وجود باید با نوع مقدار برگشتی تابع در ابرکلاس یکسان باشد). در برخی از زبانها هم میتوان با کمک کلمههای کلیدی معینی تابعی را در ابرکلاس به صورت پیشنمونه، بدون پیادهسازی تعریف کرد و زیرکلاس را ملزم به Override کردن آن نمود. علاوه بر این موارد میتوان با استفاده از تغییردهندههای سطح دسترسی، دسترسی کلاس فرزند به المانهای کلاس والد را کنترل نمود.
وراثت یکی از روشهای استفاده مجدد از کد نیز به شمار میرود. در واقع کلاس فرزند میتواند بدون تکرار از کد موجود در کلاس والد استفاده کند و در صورت لزوم با Override کردن بخشهایی از پیادهسازی، آنها را متناسب با نیاز خود سفارشیسازی کند.
پیوندهای پیشنهادی تک دیک