آموزش Interface (اینترفیس، واسط) ها در سی شارپ

آموزش Interface (اینترفیس، واسط) ها در سی شارپ

راه دیگر برای دستیابی به کلاسهای انتزاعی (abstraction) در سی شارپ ، استفاده از رابط ها است.

زمان مطالعه: 3 دقیقه
بازدید: 1198
پرسش و پاسخ: 0

Interface ها در سی شارپ

یک رابط (interface) کاملاً "کلاس انتزاعی" است که فقط می تواند شامل متدها و خصوصیات انتزاعی باشد (با بدنه خالی):

interface Animal 
{
  void animalSound(); // interface method (does not have a body)
  void run(); // interface method (does not have a body)
}

به طور پیش فرض ، اعضای یک interface انتزاعی و عمومی هستند.

توجه: رابط ها می توانند حاوی پراپرتی ها(خصوصیات) و متدها باشند ، اما فیلدها نیستند.

برای دستیابی به متدهای رابط ، رابط باید "پیاده سازی" شود (مثل ارث بری) توسط کلاس دیگری. برای پیاده سازی یک رابط ، از نماد  :  (درست مثل وراثت) استفاده کنید. بدنه متد رابط توسط کلاس "implement" ارائه می شود. توجه داشته باشید که هنگام اجرای یک رابط ، نیازی به استفاده از کلمه کلیدی override نیست:

// Interface
interface IAnimal 
{
  void animalSound(); // interface method (does not have a body)
}

// Pig "implements" the IAnimal interface
class Pig : IAnimal 
{
  public void animalSound() 
  {
    // The body of animalSound() is provided here
    Console.WriteLine("The pig says: wee wee");
  }
}

class Program 
{
  static void Main(string[] args) 
  {
    Pig myPig = new Pig();  // Create a Pig object
    myPig.animalSound();
  }
}

نکات مربوط به رابط ها:

 

  1. مانند کلاسهای انتزاعی ، از رابط ها نمی توان برای ایجاد اشیا استفاده کرد (در مثال بالا ، ایجاد یک شی "Animal" در کلاس Program امکان پذیر نیست)
  2. متدهای رابط دارای بدنه نیستند - بدنه توسط کلاس "پیاده سازی" ارائه می شود
  3. هنگام اجرای یک رابط ، باید تمام متدهای آن را نادیده بگیرید
  4. رابط ها می توانند حاوی خصوصیات و متدها باشند ، اما شامل فیلدها یا متغیرها نیستند
  5. اعضای رابط بصورت پیش فرض انتزاعی و عمومی هستند
  6. یک رابط نمی تواند حاوی سازنده باشد (زیرا برای ایجاد اشیا قابل استفاده نیست)


چرا و چه زمانی باید از رابط استفاده کرد؟

برای دستیابی به امنیت - جزئیات خاصی را پنهان کنید و فقط جزئیات مهم یک شی (رابط) را نشان دهید.

C# از "چندین وراثت" پشتیبانی نمی کند (یک کلاس فقط می تواند از یک کلاس پایه ارث بری کند). با این وجود ، می توان با رابط ها به آن دست یافت ، زیرا کلاس می تواند چندین رابط را پیاده سازی کند. توجه: برای پیاده سازی چندین رابط ، آنها را با کاما جدا کنید (به مثال زیر مراجعه کنید).

Interfaces چند گانه

برای پیاده سازی چندین رابط ، آنها را با کاما جدا کنید:

interface IFirstInterface 
{
  void myMethod(); // interface method
}

interface ISecondInterface 
{
  void myOtherMethod(); // interface method
}

// Implement multiple interfaces
class DemoClass : IFirstInterface, ISecondInterface 
{
  public void myMethod() 
  {
    Console.WriteLine("Some text..");
  }
  public void myOtherMethod() 
  {
    Console.WriteLine("Some other text...");
  }
}

class Program 
{
  static void Main(string[] args)
  {
    DemoClass myObj = new DemoClass();
    myObj.myMethod();
    myObj.myOtherMethod();
  }
}
بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده