Sobes.tech
Junior — Middle
93

Чем отличается объявление интерфейса от определения класса в C#?

Answer from AI

sobes.tech AI

В C# интерфейс и класс отличаются по нескольким ключевым аспектам:

  • Определение:

    • Интерфейс — это контракт, который определяет набор методов, свойств, событий и индексаторов без реализации.
    • Класс — это тип, который может содержать реализацию методов, полей, свойств и т.д.
  • Реализация:

    • Интерфейс не содержит реализации (до C# 8.0), только объявления.
    • Класс содержит реализацию всех своих членов.
  • Наследование:

    • Класс может наследовать только один базовый класс, но реализовывать множество интерфейсов.
    • Интерфейс может наследовать несколько других интерфейсов.
  • Модификаторы доступа:

    • Члены интерфейса по умолчанию публичные и не могут иметь модификаторы доступа.
    • В классе можно использовать разные уровни доступа (public, private, protected и др.).

Пример интерфейса и класса:

public interface ILogger
{
    void Log(string message);
}

public class ConsoleLogger : ILogger
{
    public void Log(string message)
    {
        Console.WriteLine(message);
    }
}

Таким образом, интерфейс задаёт, что должно быть реализовано, а класс — как именно.