وراثت:
وراثت یکی از مباحث پیشرفته و همچنین کاربردی برنامه نویسی شیئ گرا محسوب می شود. در چارچوب .NET از وراثت استفاده زیادی شده است و حتی خود شما تاکنون کلاس هایی ایجاد کرده اید که از کلاسهای دیگر ارث برده اند – هر فرم ویندوزی که در برنامه های خود ایجاد می کردید، در حقیقت یک کلاس جدید بود که از بسیاری از اطلاعات خود را از کلاس مربوط به یک فرم خالی به ارث می برد.
وراثت برای ایجاد اشیای به کار برده می شود که "تمام اعضای یک شیئ دیگر را داشته باشد و علاوه بر آنها، شامل چندین عضو جدید برای خودش باشد". هدف اصلی وراثت این است که بتوانید کارایی های یک کلاس را، بدون اینکه بدانید آن کلاس به صورت درونی چگونه کار می کند، افزایش دهید. به عبارت دیگر با استفاده از وراثت می توانید اشیایی را بر پایه اشیای دیگر که توسط برنامه نویسان دیگری نوشته شده است ایجاد کنید، بدون اینکه بدانید برنامه نویسان اصلی چگونه آن شیئ پایه را ایجاد کرده اند.
به وسیله وراثت می توانید از یکی از کلاسهای موجود استفاده کرده، خاصیت ها و متدهای جدیدی به آن اضافه کنید و یا بعضی از متدها و خاصیت های آن را با متدها و خاصیت های مورد نظر خودتان عوض کنید و به این ترتیب کلاس جدیدی ایجاد کنید که دقیقاً نیازهای تان را برطرف کند. برای مثال، با استفاده از کلاس Car که یک کلاس کلی است، می توانید کلاسهای خاصی تری مانند کلاسی برای اتومبیل های مسابقه ای، کلاسی برای وسایل نقلیه سنگین، کلاسی برای اتومبیل های سواری و … ایجاد کنید.
فرض کنید می خواهید اتومبیل های مسابقه ای را در کامپیوتر به وسیله کلاسی به نام SportsCar مدل کنید. کلاس SportsCar مشابه کلاس Car خواهد بود اما در بعضی از قسمتها تفاوتهای جزئی دارد. برای مثال تعداد درها در اتومبیل های مسابقه ای ممکن است بین 2 تا 6 نباشد و یا در این کلاس، علاوه بر متد ها و خاصیت های موجود در کلاس Car به متدها و خاصیت هایی نیاز دارید که اطلاعاتی را در مورد کارایی و عملکرد اتومبیل به کاربر بدهد، مانند متدهای Weight و یا PowerToWeightRatio .
نکته: به کلاسی که از کلاس دیگری به ارث گرفته شود (همانند کلاس SportsCar در مثال بالا)، کلاس مشتق شده و به کلاسی که کلاسهای دیگر از آن مشتق می شوند (مانند کلاس Car در مثال بالا) کلاس پایه می گویند.
یکی از مواردی که در مورد وراثت باید بدانید، نحوه دسترسی کلاس مشتق شده به عضو های public و private کلاس پایه است. هر عضو public از کلاس پایه به وسیله کلاس مشتق شده قابل دسترسی است، اما کلاس های مشتق شده به عضو های private کلاس پایه دسترسی ندارند. بنابراین اگر کلاس SportsCar بخواهد سرعت یک شیئ را تغییر دهد باید از خاصیت ها و متدهای موجود در کلاس Car استفاده کند و نمی تواند به صورت مستقیم به فیلد _speed دسترسی داشته باشد.
Inheritance-1
2-Derived Class
3-Base Class