رابط ها (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 تشکر