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

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



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

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


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



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

کد:
abstract class FourLeggedAnimal
{
public abstract string Describe();
}

اما چرا می خواهیم یک متد خالی را تعریف کنیم، در حالی که کاری برایمان انجام نمی دهد؟
به دلیل این که متد پایه (Abstract Method) یک تعمد یا اجبار است تا آن متد در تمامی کلاس های فرزند کلاس جاری اجرا شود. درواقع، به وسیله این کار در زمان اجرای برنامه چک می کنیم، آیا تمامی کلاس های فرزند، این تابع را در خود تعریف کرده اند یا خیر.
یک بار دیگر اشاره داریم که این روش بهترین روش برای تعیین یک کلاس پایه برای چیزی در برنامه است، در حالی که می توانیم کنترل کنیم، کلاس فرزند یا subclass چه کارهایی را بایستی قادر باشد، انجام دهد.
با در نظر گرفتن مطلب فوق، شما همواره می توانید کاری کنید تا یک کلاس فرزند subclass همانند کلاس پایه عمل کند. برای مثال، به کد مثال زیر دقت کنید :
کد:

namespace AbstractClasses
{
class Program
{
static void Main(string[] args)
{
System.Collections.ArrayList animalList = new System.Collections.ArrayList();
animalList.Add(new Dog());
animalList.Add(new Cat());
foreach(FourLeggedAnimal animal in animalList)
Console.WriteLine(animal.Describe());
Console.ReadKey();
}
}

abstract class FourLeggedAnimal
{
public abstract string Describe();
}


class Dog : FourLeggedAnimal
{

public override string Describe()
{
return \"I\'m a dog!\";
}
}

class Cat : FourLeggedAnimal
{
public override string Describe()
{
return \"I\'m a cat!\";
}
}
}

همانطور که در کد مثال مشاهده می کنید، ما یک لیست آرایه ای ArrayList شامل نام چند حیوان را درست کرده ایم. سپس یک نمونه جدید از Dog و Cat را ایجاد و به لیست اضافه کرده ایم. در شی ذکر شده، نمونه هایی ایجاد شده از کلاس Dog وCat هستند، از طرف دیگر نوعی از کلاس FourLeggedAnimal نیز محسوب می شوند. تا زمانی که کامپایلر می داند که کلاس فرزند متعلق به کلاس پایه است، می توانید متد Describe() را فراخوانی و اجرا کنید، بدون این که دقیقا نوع حیوان شی را بدانید.
بنابراین با انجام عمل تبدیل نوع داده ای (TypeCasting) که در حلقه foreach loop برای کلاس FourLeggedAnimal انجام دادیم، به اعضای کلاس فرزند subclass دسترسی پیدا کردیم. این کار در بسیاری از موارد سودمند خواهد بود.
پنجشنبه 27 آبان 1395 - 10:48
ارسال پیام نقل قول تشکر / موافقم / آفرین گزارش
1 کاربر از fns4565 به خاطر این مطلب مفید تشکر کرده اند : karim_orooji ,


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



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



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