دانلود آهنگ جدیدclose
آموزش مفهوم کلاس پایه Abstract Class در C#
::: در حال بارگیری لطفا صبر کنید :::

نام کاربری :   پسورد :



تابلو اعلانات

◘ نتایج مسابقات انتخاب مدیر برای انجمن ویدئو لرن ◘


تعداد بازدید : 382
نویسنده پیام
fns4565 آفلاین



ارسال‌ها: 25
عضویت: 26 /1 /1395
تشکر شده: 15
آموزش مفهوم کلاس پایه Abstract Class در C#
کلاس های مطلق یا پایه (Abstract Class) در زبان C#، که با کلمه کلیدی abstract مشخص می شوند، کلاس های پایه و مادر در یک سلسله مراتب درختی کلاس ها می باشند. به عبارت دیگر این کلاس ها، کلاس مرجع بوده و بقیه کلاس ها به ترتیب از روی این کلاس به ارث می روند.

نکته :مسئله مهم در مورد کلاس های ثابت Abstract Class این است که شما نمی توانید یک نمونه یا شی از روی این کلاس ها بسازید، اگر این کار را انجام دهید، با خطای کامپایلر مواجه خواهید شد.
به جای عدم امکان ساخت شی از روی کلاس های پایه، می توانید یک کلاس فرزند یا Subclass همانطور که در درس قبل آموزش دادیم، را از روی کلاس پایه ساخته و سپس object های خود را از روی کلاس فرزند تولید کنید.
اما چه زمانی ممکن است به کلاس های پایه نیاز داشته باشید؟ اگر بخواهیم با هم رو راست باشیم، شما ممکن است یک پروژه کامل را کدنویسی کنید، بدون این که نیازی به کلاس پایه داشته باشید. اما این نوع کلاس ها برای یک منظور خاص، بسیار مناسب بوده و آن کاربرد در چهارچوب کاری یا FrameWork ها می باشد. به همین دلیل است که چهارچوب کاری .NET پر از کلاس های پایه است.
در کد کلاس زیر، ما یک کلاس پایه به نام Four Legged Animal (چهارپایان) را ایجاد کرده و سپس کلاس دیگری به نام 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
{

}
}

اگر کد مثال فوق را با مثال های درس قبل، آموزش مفهوم ارث بری در 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 : FourLeggedAnima
کد:
l
{
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) را آموزش خواهیم داد.
پنجشنبه 27 آبان 1395 - 10:30
ارسال پیام نقل قول تشکر / موافقم / آفرین گزارش


تازه سازي پاسخ ها



برای ارسال پاسخ ابتدا باید لوگین یا ثبت نام کنید.



تاپیک های مرتبط
موضوع تاریخ تعداد پاسخ آخرین ارسال بازدید
[Post_Title] [Post_Date] [Post_Answer] [Post_Last_User] [Post_Hit]
پرش :
صفحه اصلی | انجمن | ورود | عضویت | خوراک | نقشه | تماس با ما | طراح