Интерфейсы в C#: определение, пример и практическое применение
Что такое интерфейс в C#?
Интерфейс в C# — это контракт, определяющий набор членов — методов, свойств, событий или индексаторов — который класс или структура обязан реализовать. Он специфицирует что делает, но не как, позволяя разным типам предоставлять одинаковый набор операций, скрывая детали реализации.
Интерфейсы способствуют слабой связанности, полиморфизму и множественному наследованию определений типов, что критично для написания тестируемого, поддерживаемого кода.
Конкретный пример
Ниже приведена минимальная консольная программа, демонстрирующая объявление, реализацию и использование интерфейса.
using System;
namespace DemoApplication {
// 1. Объявление контракта
interface IGuru99Interface {
void SetTutorial(int id, string name);
string GetTutorial();
}
// 2. Реализация контракта
class Guru99Tutorial : IGuru99Interface {
private int tutorialId;
private string tutorialName;
public void SetTutorial(int id, string name) {
tutorialId = id;
tutorialName = name;
}
public string GetTutorial() => tutorialName;
static void Main(string[] args) {
var tutor = new Guru99Tutorial();
tutor.SetTutorial(1, ".Net by Guru99");
Console.WriteLine(tutor.GetTutorial());
Console.ReadKey();
}
}
}

Ключевые выводы:
- Интерфейсы объявляются с ключевым словом
interface. - Они содержат только сигнатуры; реализация предоставляется классом.
- Класс, реализующий интерфейс, должен определить все его члены, обеспечивая соответствие контракту.
Зачем использовать интерфейсы?
- Абстракция — разделение «что» от «как».
- Полиморфизм — единообразная работа с разными реализациями.
- Тестируемость — замена реальных реализаций на моки или стабы в юнит-тестах.
Резюме
Интерфейс задаёт операции, которые тип должен поддерживать. Реализуя интерфейс, класс гарантирует соблюдение этого контракта, облегчая чистую архитектуру и масштабируемый дизайн.
Язык C
- Использование данных в Интернете надежности: стратегии эффективного управления
- Операторы в C++: типы, примеры и практические программы
- Цикл for в C++: синтаксис, принцип работы и практические примеры
- std::stack в C++: полное руководство с практическими примерами
- Структуры (struct) в C++: объяснение с практическим примером
- Освоение std::list в C++: синтаксис, функции и практические примеры
- C++ Struct vs Class: ключевые отличия, синтаксис и лучшие сценарии использования
- Абстрактные классы в C#: практическое руководство с примерами кода
- Интерфейс vs Абстрактный класс в Java: Как выбрать правильную абстракцию
- Интерфейсы в Java: определение, использование и лучшие практики