علمی فناوری 03:39 - 08 اردیبهشت 1403

آموزش سی‌شارپ – بخش ۶۴
  • مقدمه

پیرو مباحث شیء‌گرایی که تا کنون با هم در حال مرور آن بودیم، این بخش نیز قرار هست با هم در رابطه با یکی از موضوعات مهم دیگر از مفاهیم شیء‌گرایی صحبت کنیم. وراثت یا Inheritance یکی دیگر از مهم‌ترین مباحث شیء‌گرایی می‌باشد. برای آشنایی با آن، با ما همراه باشید.

  • معرفی وراثت یا Inheritance

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

به آخرین نسخه همراه با جدیدترین تغییرات از کلاس HappyBirthday نگاه کنید:

inheritanceHB

ما Propertyها را از این کلاس حذف کردیم و همانطور که می‌بینید، تنها دو متد Public داریم. سازنده یا همان Constructor همچنان به‌همان صورت باقی‌ است. تنها کاری که این سازنده در اینجا انجام می‌دهد، اختصاص دو مقدار رشته به دو متغیر است.

وراثت، ساختن یک کلاس فرزند از کلاس والد است. در اصطلاح به کلاس پدر، Base می‌گویند. به کلاس فرزند نیز نام derived را اطلاق می‌کنند. کلاس فرزند می‌تواند از تمامی متدهای کلاس والد استفاده کند؛ اما کدهای مختص به خود را خواهد داشت! در عکس زیر، یک کلاس فرزند را می‌بینید که از کلاس والد خود، به ارث برده است.

inheritance_Derived

کاری که می‌خواهیم انجام دهیم این است که یک کلاس دیگری با نام BirthdayParty ایجاد کنیم. از آنجایی که این دو به هم مرتبط هستند، ما می‌توانیم از وراثت کمک بگیریم. این بدین معناست که دیگر لازم نیست که همه چیز را از ابتدا شروع کنیم. تنها کافیست هرآنچه را که در کلاس HappyBrithday ایجاد کرده‌ایم را مجدداً استفاده کنیم. برای مثال، فرض کنید که بخواهیم متن زیر را نمایش دهیم:

Happy Birthday Shahid!

You have 8 Presents

Enjoy your party!

ما می‌توانیم که دو پیغام اول را از کلاس والد دریافت کنیم، ولی پیغام آخر را می‌توان که از کلاس فرزند اخذ کرد. روز تولد (Birthday) و جشن تولد (Birthday Party) دارای ارتباط نزدیک هستند، اما می‌خواهیم این دو را از هم جدا نگه داریم. با این وجود، خواهیم توانست که اطلاعات بیشتری را در مورد جشن تولد اضافه کنیم؛ مثلاً: تعداد میهمانان، محل برگزاری، ساعت برگزاری، و …. اما این‌ها را به کلاس فرزند اضافه خواهیم کرد؛ نه کلاس والد!

به خط اول کدهای فوق دقت کنید:

class BirthdayParty HappyBirthday

طبق آنچه پیش‌تر گفته شد، برای ساخت کلاس، ابتدا با کلمه کلیدی Class شروع کردیم و سپس نام کلاس مورد نظرمان را نوشتیم. از آنجا که می‌خواهیم این کلاس، فرزند کلاس دیگری باشد، از کد زیر استفاده کردیم:

: HappyBirthday

درواقع برای آنکه مشخص کنیم که این کلاس، کلاس فرزند است، از دونقطه استفاده کردیم و برای مشخص نمودن کلاس والد آن،‌ نام آن در مقابل آورده شده است.

تنها نکته متفاوت در این بخش این است:

public BirthdayParty() :base()

{

}

ما در حال ایجاد یک سازنده برای کلاس فرزند هستیم، اما این سازنده، چیزی درباره کدهای کلاس والد نمی‌داند! برای آنکه کدهای کلاس والد را برایش تعریف کنیم از کد زیر استفاده کردیم:

:base()

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

کدهای زیر، نمونه‌ای از استفاده از دو کلاس است که در داخل کدهای button قرار داده شده است:

inheritanceButtonB

در این کد، یک شیء یا همان Object از کلاس فرزند با نام partyOn ایجاد کردیم. سپس، سه پیغام مختلف را در ادامه معرفی نموده‌ایم. دو پیغام اول، از کلاس والذ اخذ شده است (درواقع از متدهای کلاس والد استفاده شده است.) و پیغام آخر، متدی است که در کلاس فرزند تعریف شده.

بحث وراثت یکی از مباحث پیچیده در سی‌شارپ است که مطالعه زیادی را می‌خواهد، اما بطور کلی، در هنگام استفاده از وراثت، کلاس فرزند، همه‌ی متغیرها، متدها و Propertyها را از کلاس والذ خود به ارث می‌برد.


4365147
 
پربازدید ها
پر بحث ترین ها

مهمترین اخبار علمی فناوری

علمی فناوری
«باشگاه خبرنگاران» گوگل قصد دارد به‌زودی جزئیات کامل اندروید ۱۵، اندروید TV و ور او اس ۵ را اعلام کند.
علمی فناوری
«باشگاه خبرنگاران» مدتی پس از گوشی گلکسی A54، حالا یک به‌روزرسانی غیرمنتظره برای A35 نیز منتشر شده است.
علمی فناوری
«باشگاه خبرنگاران» رقابت بیش از یک میلیون نفر از داوطلبان ۵ گروه آزمایشی نوبت اول کنکور ۱۴۰۳ امروز پایان یافت، کنکوری‌ها نیمه اول مردادماه منتظر نتیجه اولیه آزمون خود باشند.
علمی فناوری
«باشگاه خبرنگاران» گروهی از متخصصان در مؤسساتی از جمله دانشگاه «هوکایدو»‌ ژاپن می‌گویند بنابر نتایج یک مطالعه گسترده، باکتری‌های مقاوم به دارو ممکن است از جامعه انسانی به محیط‌های آبی و حیات وحش منتقل شوند.
علمی فناوری
«باشگاه خبرنگاران» نوعی نانوحباب مغناطیسی موسوم به اسکایرمیون، به عنوان گزینه آتی برای تولید بیت‌های کامپیوتر‌ها است.
علمی فناوری
«باشگاه خبرنگاران» سندرم ناخن زرد یک بیماری نادر است که ناخن‌های دست و پا را درگیر می‌کند و معمولا افراد بالای ۵۰ سال به این عارضه دچار می‌شوند.
علمی فناوری
«باشگاه خبرنگاران» دفترچه سوالات نوبت اول کنکور ۱۴۰۳ در گروه‌های آزمایشی علوم تجربی و دانشگاه فرهنگیان منتشر شد و کلید اولیه سوالات نیز از سه‌شنبه (۱۱ اردیبهشت) در دسترس خواهد بود.
علمی فناوری
«باشگاه خبرنگاران» سامسونگ تابستان امسال دستگاه‌های پوشیدنی جدیدی را معرفی خواهد کرد که احتمالاً هوش مصنوعی نقش مهمی در آنها ایفا می‌کند.
علمی فناوری
«باشگاه خبرنگاران» در فاصله ۵۰ تا ۶۰ میلیون سال نوری از زمین، انفجار‌های ستارگانی مرموزی در کهکشان NGC ۴۳۸۳ رخ می‌دهد.
علمی فناوری
«باشگاه خبرنگاران» موجودات فضایی و جستجو برای حیات فرازمینی منبع دائمی کنجکاوی برای انسان‌ها به طور کلی و دانشمندان به طور خاص بوده است.

مشاهده مهمترین خبرها در صدر رسانه‌ها

صفحه اصلی | درباره‌ما | تماس‌با‌ما | تبلیغات | حفظ حریم شخصی

تمامی اخبار بطور خودکار از منابع مختلف جمع‌آوری می‌شود و این سایت مسئولیتی در قبال محتوای اخبار ندارد

کلیه خدمات ارائه شده در این سایت دارای مجوز های لازم از مراجع مربوطه و تابع قوانین جمهوری اسلامی ایران می باشد.

کلیه حقوق محفوظ است