اینجا میتونی برنامه نویسی ویندوز رو به طور کاملا رایگان یاد بگیری
3 سال پیش / خواندن دقیقه

Interface ها در زبان سی شارپ

یک interface(اینترفیس) در زبان سی شارپ تنها شامل تعاریفی از متد ها ، صفت ها ، و رویداد هاست اما فاقد پیاده سازی آنهاست. و این بر عهده کلاس گذاشته شده است که به شیوه ای که خود میخواهد اعضای یک interface را پیاده سازی کند. اینترفیس نگهداری یک برنامه را آسان میکند.

اینترفیس

در سی شارپ ، یک اینترفیس با استفاده از کلمه ی رزرو شده ی interface تعریف میشود. برای مثال در زیر یک مثال ساده از تعریف یک interface آمده است. این اینترفیس حاوی تعریف متد Log است. دقت کنید که فقط حاوی تعریف این متد بوده و بدنه ی آن توسط کلاسی که از این اینترفیس استفاده میکند پیاده سازی میشود :

interface ILog
{    void Log(string msgToLog);
}

اکنون کلاس های مختلف با فراهم آوردن بدنه ی متد Log میتوانند اینترفیس ILog را پیاده سازی کنند. برای مثال کلاس ConsoleLog در مثال زیر اینترفیس ILog با چاپ یک پیغام در خروجی پیاده سازی کرده است ، در حالی که کلاس FileLog همین پیغام را در یک فایل متنی درج میکند.
اینترفیس را میتوان با استفاده از قاعده ی نوشتاری زیر پیاده سازی کرد :

<class name> : <interface name > 
class ConsoleLog: ILog
{    public void Log(string msgToPrint)    {        Console.WriteLine(msgToPrint);    }
}

class FileLog :ILog
{    public void Log(string msgToPrint)    {            File.AppendText(@"C:\Log.txt").Write(msgToPrint);    }
}


اکنون میتوان از هرکدام از کلاس های FileLog و یا ConsoleLog شی ایی نمونه سازی کرد :

ILog log = new ConsoleLog();

//Or 

ILog log = new FileLog();

پیاده سازی صریح

میتوان یک اینترفیس را با قرار دادن نام آن ، قبل از نام متد به شکلی که در زیر آمده است به صورت صریح پیاده سازی کرد :

class ConsoleLog: ILog
{    public void ILog.Log(string msgToPrint) // explicit implementation    {        Console.WriteLine(msgToPrint);    }
}

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

به خاطر داشته باشید که :

  • یک Interface تنها شامل تعاریف متد ها ، رویداد ها و صفات است.
  • یک Interface میتواند به صورت صریح و یا ضمنی پیاده سازی شود
  • یک Interface نمیتواند شامل اعضای private باشد. تمام اعضای یک اینترفیس به صورت پیشفرض public هستند.



شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع