Интерфейсы

Интерфейс определяет контракт, который должен реализовать класс. Это набор методов и свойств без реализации.

Создание интерфейса

Интерфейс объявляется с ключевым словом interface. Имена обычно начинаются с I.

using static System.Console;

interface IAnimal
{
    void MakeSound(); // Метод без реализации
    string Name { get; set; } // Свойство
}

class Dog : IAnimal
{
    public string Name { get; set; }

    public void MakeSound()
    {
        WriteLine("Гав!");
    }
}

class Program
{
    static void Main(string[] args)
    {
        IAnimal dog = new Dog();
        dog.Name = "Шарик";
        dog.MakeSound(); // Вывод: Гав!
        WriteLine(dog.Name); // Вывод: Шарик
    }
}

Отличия от классов

  • Интерфейсы не содержат реализацию, только сигнатуры.

  • Класс может реализовать несколько интерфейсов, но наследовать только один класс.

  • Интерфейсы не содержат полей, только свойства и методы.

Полезные советы

  • Используйте интерфейсы для определения общего поведения разных классов.

  • Интерфейсы полезны для тестирования и внедрения зависимостей.

  • Называйте интерфейсы с префиксом I для ясности.

Last updated