رابط ها (Interface) در #C

در این مقاله رابط ها را در #C توضیح خواهیم داد

رابط ها (Interface) در #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();  

 

فایل های ضمیمه