{CodeGate}

ارث بری در سی شارپ (Inheritence in Csharp)

در این جلسه تیم کدگیت را با آموزش ارث بری در سی شارپ همراهی کنید. این آموزش ادامه شی گرایی در سی شارپ است. پیش نیاز این آموزش شامل موارد زیر است:

  1. آشنایی با کلمه کلیدی this
  2. آشنایی با constructor
  3. آشنایی با شی گرایی

پیش نیاز

قبل از توضیح ارث بری در سی شارپ، نیاز است یک سری موارد را توضیح دهیم. ما فرض کرده ایم برای باغ وحش یک کد ساده را میخواهیم بنویسیم. هر باغ وحش حیواناتی در خود دارد. این حیوانات یک سری ویژگی های مشترک و غیر مشترک دارند. کد ما شامل چهار کلاس است:

  1. کلاس Animal
  2. کلاس Bird
  3. کلاس Fish
  4. کلاس Zoo (همان main برنامه)

در زیر کدها به ترتیب آورده شده است:

کلاس های Fish و Bird شامل یک متد هستند(یکی swim و دیگری fly). کلاس animal شامل فیلدهای سن و جنسیت و وزن است و یک Constructor هم برای فیلهای آن نوشتیم. دو متد Eat و sleep هم در این کلاس است. در کلاس Zoo از کلاسهای Animal و Bird یک شی ساختیم و متدهای آنها را صدا زدیم.

ارث بری در سی شارپ

در بالا ما سه کلاس Fish و Bird و Animal داریم. در کلاس Animal دو متد خوابیدن (Sleeping) و خوردن(Eating) قرار دادیم. مسئله اینجاست که دقیقا این ویژگیها در کلاس Bird و Fish هم وجود دارد. یک راه این است که تمام متدهای در کلاس Animal را درون این دو کلاس قرار دهیم ولی آیا این راه درست است؟ اگر بخواهیم یک حیوان دیگر بسازیم باز هم باید همین کار ها را بکنیم؟!!!

راه حل استفاده از ارث بری در سی شارپ است. ارث بری در سی شارپ همانطور که از نام آن معلوم است ارث بردن تمام ویژگیهای یک کلاس به کلاس دیگر است.

کلمات کلیدی ارث بری در سی شارپ

در ارث بری با یک سری کلمات جدید آشنا میشویم و به همین دلیل یک قسمت جداگانه برای معرفی این کلمات قرار دادیم. کلمات کلیدی به صورت زیر هستند:

  1. کلاس پدر: اگر کلاس Bird از کلاس Animal ارث بری کند کلاس Animal را کلاس پدر میگوییم.
  2. کلاس فرزند: اگر کلاس Bird از کلاس Animal ارث بری کند کلاس Bird را کلاس فرزند میگوییم.
  3. base: اشاره گر به شی پدر. با base ما به constructor و متدها و فیلدهای پدر دسترسی داریم (البته در صورت private نبودن).

 کد ارث بری در سی شارپ

در بالا گفتیم میخواهیم کدی بزنیم که هم Bird و هم Fish ویژگیهای Animal را داشته باشند. برای این کار ما باید این دو کلاس را ارث بری کنیم به کلاس Animal . کد این دو کلاس به صورت زیر است(به بعد از نام کلاس ‘:’ را اضافه کردیم برای ارث بری):

همانطور که میبینید ما این کلاس ها را ارث بری کردیم ولی یک Constructor هم اضافه شد به کد نسبت به قبل. دلیل نوشتن Constructor این است که وقتی ما شی از bird میسازیم به دلیل ارث بری در سی شارپ به طور غیر مستقیم یک شی Animal نیز ساختیم(چرا؟!!). به همین دلیل با کلیدواژه Base میتوانیم Constructor پدر را صدا بزنیم.

تست ارث بری در سی شارپ

برای تست کدهای بالا، کد main زیر را بزنید:

همانطور که میبینید bird متد eat را هم میتواند صدا بزند. توجه داشته باشید که کلاس Animal به متد fly و swim دسترسی ندارد.

پسورد: www.codegate.ir

 

دسته : #c, آموزش قدم به قدم #c

دیدگاه بگذارید

نظر شما چیست؟

مطلع کردن شما از
avatar

wpDiscuz