X
تبلیغات
نماشا
رایتل

یکی از مفاهیم شی گرایی ، مبحث Interface  ها است . مفهمومی که با وجود ساده بودن ، اما کاربردهای فراوانی دارد . در این مختصر می خواهم مفهموم و دلایل کاربردهای Interface  ها را بیان کنم .

 

Interface  چیست ؟

Interface را نمی توان کلاس نامید . هر چند در سلسله مباحث کلاسها مورد بررسی قرار می گیرد . اما می توان آن را قانونی  در نظر گرفت که بر روی کلاسها ، اعمال میشود . در واقع Interface قراردادی است . که به موجب این قرار داد ، برخی زیر کلاسهای برنامه ما موظفند از بندهای این قرارداد استفاده کنند . با این تفاوت که ما در Interface فقط کلیات قرار داد را ذکر می کنیم و جزییات را به عهده زیر کلاسها می گذاریم.

 

مهمترین نکته ها در مورد Interface :

 

1-وقتی ما از Interface استفاده می کنیم  زیر کلاسی که از Interface ارث بری می کند ، باید و باید و باید ، تمام متدها و خصوصیات Interface را اعمال کند (override) در غیر اینصورت با پیغام خطا مواجه می شویم.

 

2-یک کلاس فقط می تواند از یک کلاس دیگر ارث بری کند ، اما یک کلا س می تواند از چندین Interface ارث بری کند ( در مورد مفهموم ورراثت چند گانه خواهم نوشت )

 

3-Interface محدوده ای از متدهایی را تعریف می کند که چنانچه کلاسی از آن ارث بری  کند باید تمام آنها را اعمال کند

 

4-تعریف Interface  شبیه تعریف کلاس است با این تفاوت که در Interface بدنه متدها و خصوصیتها نوشته نمی شود و فقط نوع پارامترها ی ارجاعی و بازگشتی مشخص می شود.

 

5-Interface  نمی تواند داده ها را ذخیره کند ، شما نمی توانید برای Interface  فیلد تعریف کنید . شما فقط می توانید یک تعریفی کلی از خصوصیت و متدها را اعلام کنید .

 

6-ما نمی توانیم متغیری از نوع  Interface  تعریف کنیم .

 

7- Interface می تواند از Interface  دیگری ارث بری کند . در این حالت کلاسی که از Interface فرزند ارث بری می کند ، باید تمام خصوصیات و متدهای Interface والد و فرزند را اعمال کند .

 

در زیر یک مثال از Interface می آوریم ، Interface با کلمه Interface تعریف می شود . خوب Interfaceی به صورت زیر تعریف می کنیم :

 

interface Icol

    {

    {;   string Funny { get  

void Honk();      

 

}

همانطور که در بالا تعریف کردیم ما Interfaceی به نام مثلا به نام Icol  تعریف می کنیم ، این Interface دارای متد honk  و دارای خصوصیت  funny  است . همانطور که می بینید ، فقط اعلان شده اند و هم متد و هم خصوصیت فاقد بدنه هستند .

حال باید کلاسی تعریف کنیم که Interface بالا را ارث بری کند و متدها و خصوصیت در آن اعمال شوند .

 

class TallGuy : Icol

    {

        public string Name;

        public int Height;

 

        public void TalkAboutYourself()

        {

            MessageBox.Show("My name is " + Name + " and I’m "

               + Height + " inches tall.");

        }

 

        public string Funny

        {

            get { return "big shoes"; }

        }

 

        public void Honk()

        {

            MessageBox.Show("Honk honk!");

        }

    }

 

خوب همانطور که می بینید کلاس ما علاوه بر ارث بری از Interface ، متدها و خصوصیتهای آن را با بدنه دوباره تعریف می کند .


در مقاله بعد در مورد کلاس  abstract class  خواهم نوشت .