رابط ها (Interface) در #C
سه شنبه 25 فروردین 1394در این مقاله رابط ها را در #C توضیح خواهیم داد
رابط ها ( Interface ) یک قرارداد هستند که قابل اجرا میباشند .زیرا در داخل آن یک متد قرار دارد . اجرای این متدها با کمک کلاس های مخصوص به آن متد امکان پذیر می باشد .همچنین ما میتوانیم از properties ,indexer ها نیز استفاده کنیم .
سطح دسترسی به interface به صورت پیش فرض public میباشد , کلاسی که برای interface استفاده می شود برای تمامی متد ها حتمی باید اجرا شود .
interface ITest { void Read(); }
interface یک کلمه کلیدی میباشد که شامل تعریف متدهای مرتبط میباشد , به مثال زیر توجه فرمایید :
interface ICalculate { int Add(int a,int b); int Sub(int a, int b); int Mul(int a, int b); } class Test : ICalculate { public int Add(int a,int b) { return a + b; } public int Sub(int a, int b) { return a - b; } public int Mul(int a, int b) { return a * b; } } class Program { static void Main(string[] args) { Test obj = new Test(); ICalculate iadd = (ICalculate)obj; int add= iadd.Add(10, 20); int sub = iadd.Sub(30,10); int mul = iadd.Mul(20,30); Console.WriteLine(" Addition : {0} Subtraction : {1} Multiplication : {2} ", add, sub, mul); Console.ReadLine(); } }
در مثال قبل یک نمونه از interface ذکر شد که شامل 3 متد و یک کلاس بود . بنابراین این کلاس باید برای تمامی متدها اجرا شود .
حالا چطور میشود اگر بخواهیم از 2 interface استفاده کنیم .آیا می شود یک نام متد مشترک داشته باشد؟
interface A { void Display(); } interface B { void Display(); }
هر دو interface می توانند از یک متد با نام مشترک استفاده کنند .اکنون کلاس این interface ها را تست می کند .
زمانی که نمایشگر موس را روی interface ها را می بریم سپس باید به آدرس ذکر شده می رویم :
Implement Interface>Implement Interface explicity
وقتی گزینه بالا را انتخاب کردیم به صورت خودکار متد و interface هردو با یک نام ایجاد میشود .همچنین ما میتوانیم از طریق کد این دستورات را اجرا کنیم :
void A.Display() { Console.WriteLine("I am being called from Interface A"); } void B.Display() { Console.WriteLine("I am being called from Interface B"); }
کد کامل به صورت زیر میباشد :
interface A { void Display(); } interface B { void Display(); } class Test:A,B { void A.Display() { Console.WriteLine("I am being called from Interface A"); } void B.Display() { Console.WriteLine("I am being called from Interface B"); } } class Program { static void Main(string[] args) { Test obj1 = new Test(); A a = (A)obj1; a.Display(); Test obj2 = new Test(); B b = (B)obj2; b.Display(); Console.ReadLine(); } }
اکنون می توانیم از interface ایجاد شده یک شئی بسازیم . مانند کد زیر :
A a = new Test(); a.Display();
- C#.net
- 3k بازدید
- 1 تشکر