آموزش کامل وراثت در سی شارپ

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

آموزش کامل وراثت در سی شارپ ، وراثت  یکی از خصوصیات مهم زبان های برنامه نویسی هست. با استفاده از وراثت شما می توانید کلاس های پایه ای ایجاد کنید و از قابلیت های رایج آن استفاده کنید. کلاس های پایه ای از کلاس های مشتق شده به ارث برده شده اند. کلاس های مشتق شده خواص و متود های کلاس های پایه ای را به ارث برده اند. .Net Framework به طور کامل از وراثت پیروی می کند. برای مثال، مجموعه کلاس های پایه ای شامل خواصو و متود های که در اکثر مجموعه ها ضروری است. شامل خواصی هست مثل ظرفیت و تعداد و متودهایی مثل پاک کردن و حذف کردن (Clear and Remove).

برای استفاده از کلاس های پایه ای در یک کلاس دیگر (مثل کلاس های مشتق شده) کلاس پایه ای رو با جایگذاری یک دو نقطه ارجاع میدید بعد از اسم کلاس مشتق شده و بعد از آن اسم کلاس پایه ای رو می نویسید. کد زیر یک کلاس پایه ای آیتم ۱ (RentalItem) رو تعریف می کنه و دو کلاس مشتق شده دی وی دی (DVD) و کتاب که کلاس پایه ای رو به ارث می بره.

 

  public class RentalItem
   {
        string _title;
        public string Title
        {
            get { return _title; }
            set { _title = value; }
        }
        public Boolean CheckStock(string title)
        {
            //code to check if in stock.
            //returns true for demo.
                return true;
        }
   }
   public class DVD : RentalItem
   {
   }
   public class Book : RentalItem
   {
   }

کلاس مشتق شده خواص و متود های کلاس پایه ای رو به ارث می بره و سرویس گیرنده ی کلاس های مشتق شده هیچ اطلاعاتی در مورد کلاس های پایه ای ندارد. کلاس مشتق شده هیچ گونه محدودیتی در ویژگی ها و متود های کلاس های پایه ای نداره. به علاوه اون ها می تونن خواص و متود های لازم رو مشخص کنن. کد زیر کلاس مشتق شده (کتاب) رو نمایش میده که شابک (ISBN) خودش رو مشخص نمایش میده.

   public class Book : RentalItem
   {
       string _ISBN;
 
       public string ISBN
       {
           get { return _ISBN; }
           set { _ISBN = value; }
       }
   }

سرویس گیرنده کلاس (کتاب) به هردو عنوان و ISBN نمایش داده میشه مانند تصویر نمونع (screen shot) زیر.

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

خیلی وقت ها هست که کلاس های مشتق شده باید از قابلیت های کلاس های پایه ای استفاده کنند اما بعضی قابلیت های منحصر بع فرد نیز باید به اون اضافه بشه. در این مورد کلاس مشتق شده ی دی وی دی (DVD) از یک کلمه کلیدی پایه برای نامیدن کلاس های پایه ای (RentalItem’s) استفاده می کنه ماننده کد زیر.

  public class DVD : RentalItem
   {
       public Boolean Rent(string title, int age)
       {
           if(base.CheckStock(title))
           {
               //code to check rating against age of renter
               //returns true for demo
               return true;
           }
           else
           {
               return false;
           }
       }
   }

متودهایی که از کلاس های مشتق شده به ارث برده شده اند می تونن بارگیری بشن مثل هر کلاس دیگه ای. اسم متود ها مثل هم ولی امضهای متود ها متفاوت هستند. کد زیر کلاس (کتاب) رو نشون میده که بارگیری می کنن متود RentalItem کلاس پایه ای.

public class Book : RentalItem
   {
       string _ISBN;
       public string ISBN
       {
           get { return _ISBN; }
           set { _ISBN = value; }
       }
       public Boolean CheckStock(string title, string author)
       {
           //code to check if in stock.
           //returns true for demo.
           return true;
       }
   }

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

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

یک متود کلاس مشتق شده می تونه متود یک کلاس پایه ای رو لغو کنه با استفاده از کلمه کلیدی. برای مثال کلاس کتاب می تونه RentalItem کلاس پایه ای رو لغو کنه برای جایگذاری شابک (ISBN) به جای عنوان.

public override Boolean CheckStock(string ISBN)
       {
           //code to check if in stock.
           //returns true for demo.
           return true;
       }

در این مورد سرویس گیرنده کلاس کتاب می تونه از متود لغو شده استفاده کنه و نمی تونه متود RentalItem’s رو ببینه.

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

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

public abstract class RentalItem
   {
        string _title;
 
        public string Title
        {
            get { return _title; }
            set { _title = value; }
        }
        public Boolean CheckStock(string title)
        {
            //code to check if in stock.
            //returns true for demo.
                return true;
        }
   }

 

.Net Framework شامل تعداد زیادی کلاس های انتزاعی است، برای مثال کلاس متن خوان (TextReader) پایه انتزاعی کلاس جریان خوان ((StreamReader و رشته خوان (StringReader) است.

  • پسورد: www.mspsoft.com
محمد نجفی

نوشته‌های مرتبط

دیدگاه‌ها

*
*

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