دانلود نرم افزار - آموزش سی شارپ
دانلود نرم افزار - آموزش سی شارپ

دانلود نرم افزار - آموزش سی شارپ

ارث بری در سی شارپ بخش دوم

در این بخش در ادامه پست فبلی به سراغ معرفی نوع دیگری از ارثبری می رویم به نام ارث‌بری چندسطحی (Multilevel Inheritance) :

در مثال زیر یک کلاس از کلاسی ارث‌بری می‌کند که خودش از کلاس دیگری ارث‌بری کرده است.

public class Animal

{

    public void Eat() => Console.WriteLine("Eating...");

}

public class Mammal : Animal 

{ // سطح اول

    public void Walk() => Console.WriteLine("Walking...");

}

public class Dog : Mammal

{ // سطح دوم

    public void Bark() => Console.WriteLine("Barking...");

}

// روش استفاده

var dog = new Dog();

dog.Eat();  // از Animal

dog.Walk(); // از Mammal

dog.Bark();

 

در مثال بالا ، دلیل اینکه این کد به‌عنوان یک نمونه از ارث‌بری (Inheritance)  و به‌ویژه ارث‌بری چندسطحی (Multilevel Inheritance)  در نظر گرفته می‌شود، به ساختار سلسله‌مراتبی کلاس‌ها و نحوه دسترسی به متدها برمی‌گردد. بیایید این موضوع را مرحله به مرحله بررسی کنیم:

 1 - تعریف ارث‌بری

ارث‌بری در برنامه‌نویسی شیءگرا به این معناست که یک کلاس (کلاس فرزند) می‌تواند ویژگی‌ها و رفتارهای یک کلاس دیگر (کلاس والد) را به ارث ببرد. در اینجا، کلاس Dog  به‌طور مستقیم از کلاس Mammal  ارث‌بری می‌کند و کلاس Mammal  نیز به‌طور مستقیم از کلاس Animal ارث‌بری کرده است . این زنجیره ارث‌بری، یک ارث‌بری چندسطحی را تشکیل می‌دهد:

  • سطح اول: Animal ← Mammal 
  • سطح دوم : Mammal ← Dog

 2 - چرا این ارث‌بری است، حتی اگر متد همنام استفاده نشده باشد؟

برای جلوگیری از ایجاد سوء تفاهم در معنی ارثبری باید بگویم که ارث‌بری به معنای استفاده از متدهای همنام یا بازنویسی (Override) نیست. ارث‌بری صرفاً به این معناست که کلاس فرزند به تمام اعضای عمومی (public) و محافظت‌شده (protected) کلاس والد دسترسی دارد، مگر اینکه آن‌ها را بازنویسی یا مخفی کند. در این مثال:

  • کلاس Animal  متد Eat  را تعریف کرده است.
  • کلاس Mammal  از Animal  ارث‌بری می‌کند و متد Walk  را اضافه می‌کند.
  • کلاس Dog  از Mammal  ارث‌بری می‌کند و متد Bark  را اضافه می‌کند.

وقتی یک شیء از کلاس Dog  می‌سازید ، این شیء به تمام متدهای عمومی کلاس‌های والد خود (Eat  از Animal  و Walk  از Mammal) به علاوه متد خودش (Bark) دسترسی دارد. این دسترسی به متدها از طریق ارث‌بری ممکن شده است، حتی اگر هیچ متدی بازنویسی یا همنام نشده باشد.

 3 - ارث‌بری چندسطحی در عمل

در این کد، وقتی شما دستورات زیر را اجرا می‌کنید:

var dog = new Dog();

dog.Eat();  // خروجی: Eating...

dog.Walk(); // خروجی: Walking...

dog.Bark(); // خروجی: Barking...

  • Eat()  از کلاس Animal  (سطح اول) فراخوانی می‌شود.
  • Walk()  از کلاس Mammal  (سطح دوم) فراخوانی می‌شود.
  • Bark()  از خود کلاس Dog  (سطح سوم) فراخوانی می‌شود.

این نشان می‌دهد که Dog  به‌طور غیرمستقیم از Animal  (از طریق Mammal) ارث‌بری کرده است. این زنجیره سلسله‌مراتبی دقیقاً همان چیزی است که ارث‌بری چندسطحی را تعریف می‌کند.

 4 - جمع‌بندی

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

 

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد