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

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

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

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

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

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

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

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

Абстрактный класс может иметь конструкторы, поля и защищённые члены; создать его напрямую нельзя. Интерфейс не хранит обычное состояние экземпляра и удобен для независимых реализаций.

В современном C# интерфейсы могут содержать реализации по умолчанию и некоторые статические члены, поэтому правило «в интерфейсе никогда нет кода» устарело. Выбор зависит от необходимости общего состояния и отношения наследования.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее