ژوئن 16, 2019 Mostafa بدون دیدگاه

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

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

یکی از جنبه های کلیدی زبان های برنامه نویسی شی گرا Objected Oriented Programming (OOP) از جمله C# بر پایه آن بنا شده است، مفهوم ارث بری یا Inheritance می باشد. ارث بری یعنی تولید کلاس هایی جدید که برخی از ویژگی های خود را از کلاس مادر Parent Class به ارث برده اند.
حتی اگر کل چهارچوب کاری NET. بر پایه مفهوم ارث بری نباشد، ولی جمله معروف “همه چیز شی یا object است” از نتایج آن است. در زبان C#، حتی یک عدد ساده نمونه ای از یک کلاس است که خود از کلاس پایه System.object به ارث رفته است. اگرچه چهارچوب کاری NET.، این امکان را نیز برای شما فراهم کرده تا مقدار مورد نظر خود را مستقیما به یک عدد بدهید، بدون آن که نیاز داشته باشید تا نسخه جدیدی از کلاس Integer ایجاد کنید.
شاید بیان مفهوم ارث بری کمی سخت باشد، اما ارایه مثال های عملی کمک شایانی در این زمینه می کند. نمونه کد زیر یک مثال ساده از مفهوم ارث بری در زبان C# است :

public class Animal
{
    public void Greet()
    {
        Console.WriteLine("Hello, I'm some sort of animal!");
    }
}
 
public class Dog : Animal
{
}

در کد فوق، در مرحله اول یک کلاس به نام Animal Class تعریف کرده ایم و دارای یک متد ساده جهت چاپ پیام خوش آمد گویی است. سپس کلاس Dog را ایجاد کرده و با قرار دادن یک : در مقابل آن، به C# اعلام کرده ایم این کلاس بایستی از کلاس Animal به ارث رود. نکته جالب در مورد مثال فوق این است که رابطه سگ و حیوان نیز در طبیعت به همین صورت می باشد، یعنی Dog زیرمجموعه ای از حیوانات است. اکنون بیایید روش به کار بردن کلاس ها را بررسی کنیم :

Animal animal = new Animal();
animal.Greet();
 
Dog dog = new Dog();
dog.Greet();

اگر کد مثال فوق را اجرا نمایید، خواهید دید با وجودیکه متد Greeting() را برای کلاس Dog تعریف نکرده ایم، اما این کلاس می تواند به پیام خوش آمد بگوید، زیرا متد Greeting() را از کلاس مادر خود یعنی Animal Class به ارث برده است.
البته پیام خوش آمدگویی اولیه کد فوق، کمی نامفهوم است. اجازه دهید کدی به مثال قبلی اضافه کنیم تا بدانیم چه حیوانی به ما خوش آمد می گوید.

public class Animal
{
    public virtual void Greet()
    {
        Console.WriteLine("Hello, I'm some sort of animal!");
    }
}
 
public class Dog : Animal
{
    public override void Greet()
    {
        Console.WriteLine("Hello, I'm a dog!");
    }
}

در کنار متد اضافه شده به کلاس Dog Class، دو چیز مهم را مشاهده می کنید. ما کلمه کلیدی مجازی (Virtual keyword) را به متد کلاس Animal Class اضافه کرده ایم، از طرف دیگر کلمه کلیدی override را نیز برای کلاس Dog Class به کار برده ایم.
در زبان C#، شما نمی توانید عضو (member) یک کلاس را بازنویسی یا override کنید، مگر این که آن را به عنوان virtual تعیین کرده باشید. اگر هم بخواهید، می توانید متد به ارث برده شده را با به کار بردن کلمه کلیدی base، به صورت اولیه خود فراخوانی کنید. به صورت کد مثال زیر:

public override void Greet()
{
    base.Greet();
    Console.WriteLine("Yes I am - a dog!");
}

تنها متدها (Methods) نیستند که می توان آن ها را در کلاس ها به ارث برد، سایر اعضای یک کلاس مثل فیلدها (Fileds) و خواص (Properties) نیز خاصیت ارث بری دارند. فقط بایستی به قواعد بازه دسترسی (access modifier) که در درس قبل تشریح کردیم، توجه کنید. ارث بری یا Inheritance فقط مختص یک کلاس به کلاس دیگر نیست. شما می توانید یک سلسله مراتب از کلاس های مرتب به هم را بسازید. برای مثال می توانید یک کلاس به نام Puppy ایجاد کرده که خودش از کلاس Dog به ارث برود، در حالی که Dog فرزند کلاس Animal است.

نکته : شما در C# نمی توانید کاری کنید که یک کلاس از چند کلاس مختلف به ارث برود. به این کار ارث بری چندگانه (multiple inheritance) می گویند که در C# پشتیبانی نمی شود.

 

 

 


برچسب ها