آموزش کلاس های انتزاعی (Abstract) در سی شارپ

رتبه: 0 ار 0 رای sssss
کلاسهای انتزاعی
نویسنده: میلاد حیدری زمان مطالعه 3 دقیقه
Banner Image

کلاسهای انتزاعی، که توسط کلیدواژه abstract (انتزاعی) در تعریف کلاس مشخص شده اند، معمولاً برای تعریف کلاس پایه در سلسله مراتب استفاده می شوند. آنچه در مورد آنها به طور خاص وجود دارد؛ آن است که شما نمیتوانید نمونه ای از آنها ایجاد کنید – اگر سعی کنید، کامپایلر خطا می دهد. درعوض ، شما باید آنها را طبق آنچه در فصل توارث آموزش داده شده است، طبقه بندی کنید و نمونه ای از زیر کلاس خود ایجاد کنید. بنابراین چه زمانی به کلاس انتزاعی احتیاج دارید؟ این موضوع در واقع به آنچه می خواهید انجام دهید؛ بستگی دارد.

اگر بخواهیم صادق باشیم؛ بدون نیاز به کلاس انتزاعی می توانید مسیرهایی زیادی را طی کنید، اما آنها برای موارد خاص مانند چهارچوب ها عالی هستند، به همین دلیل است که کلاسهای انتزاعی زیادی را در چارچوب دات نت پیدا خواهید کرد. یک قانون خوب این است که این اسم در واقع حس خوبی ایجاد می کند – کلاسهای انتزاعی اغلب ، اگر نه همیشه ، برای توصیف چیزهای انتزاعی استفاده می شوند، چیزی که بیشتر یک مفهوم است تا یک چیز واقعی.

در این مثال، یک کلاس پایه برای حیواناتی که پا دارند؛ ایجاد می کنیم و سپس کلاس Dog را تعریف می کنیم؛ که از آن به ارث می رسد. مشابه زیر داریم:

namespace AbstractClasses

{

class Program

{

static void Main(string[] args)

{

Dog dog = new Dog();

Console.WriteLine(dog.Describe());

Console.ReadKey();

}

}

abstract class FourLeggedAnimal

{

public virtual string Describe()

{

return “Not much is known about this four legged animal!”;

}

}

class Dog : FourLeggedAnimal

{

}

}

اگر این مثال را با مثال فصل توارث مقایسه کنیم؛ تفاوت زیادی مشاهده نمی شود. در واقع کلیدواژه abstract که جلوی تعریف FourLeggedAnimal آمده است؛ بزرگترین تفاوت موجود است. همان طور که مشاهده می شود، یک مثال جدید از کلاس Dog ایجاد می کنیم و سپس متد ()Describe از کلاس FourLeggedAnimal به ارث می رسد. اکنون سعی کنید نمونه ای از کلاس FourLeggedAnimal را ایجاد کنید:

FourLeggedAnimal someAnimal = new FourLeggedAnimal();

با این کد نویسی به خطای کامپایلر زیر می رسید:

Cannot create an instance of the abstract class or interface ‘AbstractClasses.FourLeggedAnimal’

(نمی توان نمونه ای از کلاس انتزاعی یا رابط “AbstractClasses.FourLeggedAnimal” ایجاد کرد)

اکنون همان طور که مشاهده می کنید؛ ما متد ()Describe را به ارث رسانده ایم؛ اما به این شکل فعلی، برای کلاسDog خیلی کاربردی نیست. بیایید آن را override کنیم:

class Dog : FourLeggedAnimal

{

public override string Describe()

{

return “This four legged animal is a Dog!”;

}

}

در این مورد، ما یک override کامل انجام می دهیم؛ اما در برخی موارد، ممکن است بخواهید از رفتار کلاس پایه علاوه بر عملکردهای جدید استفاده کنید. این امر را می توان با استفاده از کلید واژه base انجام داد؛ که به کلاسی اشاره دارد که توارث از آن انجام می شود:

abstract class FourLeggedAnimal

{

public virtual string Describe()

{

return “This animal has four legs.”;

}

}

class Dog : FourLeggedAnimal

{

public override string Describe()

{

string result = base.Describe();

result += ” In fact, it’s a dog!”;

return result;

}

}

اکنون واضح است که می توانید دیگر زیرکلاس های کلاس FourLeggedAnimal را ایجاد کنید- شاید یک گربه؛ یا یک شیر. در فصل بعدی؛ مثال پیچیده تری را انجام می دهیم و متدهای انتزاعی را نیز معرفی می کنیم.

profile name
میلاد حیدری

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش کلاس های انتزاعی (Abstract) در سی شارپ»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید