Можно ли реализовать методы с телом в интерфейсе C# и зачем это нужно? В чём преимущество перед абстрактным классом?

Да, начиная с C# 8.0 в интерфейсах можно реализовывать методы с кодом — это называется "методы по умолчанию" (default interface methods).

Короткий ответ

Что ответить на собеседовании

Да, начиная с C# 8.0 в интерфейсах можно реализовывать методы с кодом — это называется "методы по умолчанию" (default interface methods). Они позволяют добавить реализацию в интерфейс, чтобы не ломать существующие реализации при расширении интерфейса.

Подробный разбор

Ответ с пояснениями

Да, начиная с C# 8.0 в интерфейсах можно реализовывать методы с кодом — это называется "методы по умолчанию" (default interface methods). Они позволяют добавить реализацию в интерфейс, чтобы не ломать существующие реализации при расширении интерфейса.

Пример:

public interface ILogger
{
    void Log(string message);

    // Метод с реализацией по умолчанию
    void LogError(string message)
    {
        Log("ERROR: " + message);
    }
}

Классы, реализующие ILogger, могут переопределить LogError, а могут использовать реализацию по умолчанию.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку