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

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

زمان مطالعه

5 دقیقه

تعداد بازدید

101

تعداد پرسش ها

0

افزودن به لیست علاقه مندی ها


برچسب ها :


اشتراک گذاری این مطلب

Interface ها در سی شارپ

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

یک رابط (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();
  }
}

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


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

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

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();
  }
}

 


پرسش و پاسخ
0
دوره پیشنهادی
دوره پیشنهادی