مشخصات مقاله
-
3033
-
5.0
-
36037
-
1
-
0
کلاس انتزاعی (Abstract Class) در C#
abstract class FourLeggedAnimal
{
public virtual string Describe()
{
return "Not much is known about this four legged animal!";
}
}
class Dog : FourLeggedAnimal
{
}
اگه کد مثال بالا رو با مثالهای درس قبل، یعنی آموزش مفهوم ارثبری در C#، مقایسه کنی، تفاوت خیلی زیادی بین اونها نمیبینی. در واقع، مهمترین تفاوت این دو مثال، استفاده از کلمه کلیدی abstract قبل از نام کلاس FourLeggedAnimal هست. همونطور که میبینی، یک نمونه از کلاس Dog ایجاد کردیم و بعد متد به ارث بردهشده Describe() رو از کلاس FourLeggedAnimal فراخوانی کردیم. حالا بیایید یک نمونه از کلاس FourLeggedAnimal هم ایجاد کنیم؛ به شکل زیر:
FourLeggedAnimal someAnimal = new FourLeggedAnimal();
اما این بار با خطای کامپایلر مواجه میشیم. متن خطا به شکل زیره:
Cannot create an instance of the abstract class or interface 'AbstractClasses.FourLeggedAnimal'
همونطور که در مثال قبل دیدیم، متد به ارث رفته Describe() رو فراخوانی کردیم، اما این متد در حالت فعلی کاربرد چندانی برای ما نداره. پس بیایید با استفاده از کد زیر، اون رو بازنویسی یا Override کنیم:
class Dog : FourLeggedAnimal
{
public override string Describe()
{
return "This four legged animal is a Dog!";
}
}
توی کد بالا، متد رو بهطور کامل بازنویسی یا Override کردیم. اما گاهی ممکنه بخوای رفتار کلاس پایه رو همونطور که هست ازش به ارث ببری و در کنار اون، کد یا مقدار بیشتری هم بهش اضافه کنی. برای این کار باید از کلمه کلیدی base استفاده کنی. این کلمه به کلاسی اشاره میکنه که از اون inherit کردهایم. به شکل زیر:
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;
}
}
حالا میتونی کلاسهای فرزند یا Subclassهای دیگهای هم برای کلاس FourLeggedAnimal ایجاد کنی. در درس بعدی، یک مثال پیشرفتهتر میبینیم و با روش کار با متدهای انتزاعی (abstract methods) آشنا میشیم.
ادامه مسیر یادگیری C# :
اگه میخوای مفاهیم شیءگرایی، ارثبری و سایر مباحث C# رو اصولیتر یاد بگیری، میتونی مسیر یادگیریت رو با یک آموزش جامع ادامه بدی. برای آشنایی بیشتر با مباحث و تمرینهای کاربردی، دوره آموزش C# میتونه قدم بعدی مناسبی برای ادامه یادگیری باشه.