НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Мова програмування C#. Уроки W3Schools українською для початківців

En Es De

C# Інтерфейс


Інтерфейси

Ще один спосіб досягти абстракції в C# — це інтерфейси.

interface є повністю "абстрактним класом", який може містити лише абстрактні методи та властивості (з порожніми тілами):

Приклад

// інтерфейс
interface Animal
{
  void animalSound(); // метод інтерфейсу (не має тіла)
  void run(); // метод інтерфейсу (не має тіла)
}

Вважається хорошою практикою починати інтерфейс з літери "I", оскільки так вам та іншим легше запам’ятати, що це інтерфейс, а не клас.

За умовчанням члени інтерфейсу є abstract та public.

Примітка. Інтерфейси можуть містити властивості та методи, але не поля.

Щоб отримати доступ до методів інтерфейсу, інтерфейс має бути "реалізований" (як наче успадкований) іншим класом. Щоб реалізувати інтерфейс, використовуйте символ двокрапки : (так само як і з успадкуванням). Тіло методу інтерфейсу надається класом "implement". Зауважте, що вам не потрібно використовувати ключове слово override під час реалізації інтерфейсу:

Приклад

// інтерфейс
interface IAnimal
{
  void animalSound(); // метод інтерфейсу (не має тіла)
}

// Pig "реалізує" інтерфейс IAnimal
class Pig : IAnimal
{
  public void animalSound()
  {
    // Тіло animalSound() надається тут
    Console.WriteLine("Свиня говорить: хрю хрю");
  }
}

class Program
{
  static void Main(string[] args)
  {
    Pig myPig = new Pig();  // Створити об’єкт Pig
    myPig.animalSound();
  }
}

Спробуйте самі »


Примітки щодо інтерфейсів:

  • Як і абстрактні класи, інтерфейси не можна використовувати для створення об’єктів (у наведеному вище прикладі неможливо створити об’єкт "IAnimal" у класі Program)
  • Методи інтерфейсу не мають тіла - тіло надається класом "implement"
  • Під час впровадження інтерфейсу ви повинні перевизначити всі його методи
  • Інтерфейси можуть містити властивості та методи, але не поля/змінні
  • Члени інтерфейсу за умовчанням є abstract та public
  • Інтерфейс не може містити конструктор (оскільки його не можна використовувати для створення об’єктів)

Чому і коли використовувати інтерфейси?

1) Щоб забезпечити безпеку, приховайте певні деталі та показуйте лише важливі деталі об’єкта (інтерфейсу).

2) C# не підтримує "множинне успадкування" (клас може успадковувати лише один базовий клас). Однак цього можна досягти за допомогою інтерфейсів, оскільки клас може реалізовувати кілька інтерфейсів.

Примітка. Щоб реалізувати кілька інтерфейсів, розділяйте їх комою (див. приклад нижче).