Введение в интерфейсы
Узнайте, как интерфейсы задают контракты для классов и повышают гибкость кода
«Введение в интерфейсы» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 6. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 6 уроков всего.
Введение в интерфейсы
Введение в интерфейсы
Добро пожаловать в первый урок раздела «Продвинутые концепции программирования»! В этом уроке вы узнаете об интерфейсах, их назначении и использовании для достижения абстракции и гибкости в программах на C#. Давайте начнём!

Что такое интерфейс?
Что такое интерфейс?
Интерфейс — это контракт, определяющий набор методов и свойств, которые должен реализовать класс. Сам интерфейс не содержит реализации, но гарантирует, что любой класс, реализующий его, соответствует определённой структуре.
Пример: Интерфейс для «Vehicle» может определять такие методы, как Start() и Stop(), которые должны реализовать все транспортные средства.
Ключевой момент: Интерфейсы позволяют создавать гибкий и повторно используемый код, отделяя поведение от реализации.
Определение интерфейса
Определение интерфейса
Чтобы определить интерфейс в C#, используйте ключевое слово interface. Пример:
Совет: По соглашению имена интерфейсов в C# начинаются с буквы I.
using System;
interface IVehicle {
void Start();
void Stop();
}
Реализация интерфейса
Реализация интерфейса
Чтобы реализовать интерфейс, класс должен определить все методы и свойства, объявленные в интерфейсе. Пример:
Ключевой момент: Класс может реализовывать несколько интерфейсов и поддерживать несколько вариантов поведения.
using System;
interface IVehicle {
void Start();
void Stop();
}
class Car : IVehicle {
public void Start() {
Console.WriteLine("Car is starting.");
}
public void Stop() {
Console.WriteLine("Car is stopping.");
}
}
class Program {
static void Main() {
IVehicle myCar = new Car();
myCar.Start();
myCar.Stop();
}
}
Зачем нужны интерфейсы?
Зачем нужны интерфейсы?
Интерфейсы дают несколько преимуществ:
- Абстракция: Определение поведения без указания реализации.
- Гибкость: Класс может реализовывать несколько интерфейсов, благодаря чему он поддерживает несколько ролей.
- Согласованность: Обеспечение общей структуры для связанных классов.
Совет: Используйте интерфейсы, если хотите определить общий контракт, не указывая, как именно он должен выполняться.
Объединение нескольких интерфейсов
Объединение нескольких интерфейсов
Класс может реализовывать несколько интерфейсов, объединяя различные наборы поведения. Пример:
using System;
interface IVehicle {
void Start();
void Stop();
}
interface IRadio {
void PlayMusic();
}
class Car : IVehicle, IRadio {
public void Start() {
Console.WriteLine("Car is starting.");
}
public void Stop() {
Console.WriteLine("Car is stopping.");
}
public void PlayMusic() {
Console.WriteLine("Playing music.");
}
}
class Program {
static void Main() {
Car myCar = new Car();
myCar.Start();
myCar.PlayMusic();
myCar.Stop();
}
}
Практическое задание
Практическое задание
Создайте интерфейс IShape с методом CalculateArea(). Реализуйте этот интерфейс в классах Rectangle и Circle. Пример:
using System;
interface IShape {
double CalculateArea();
}
class Rectangle : IShape {
public double Width { get; set; }
public double Height { get; set; }
public double CalculateArea() {
return Width * Height;
}
}
class Circle : IShape {
public double Radius { get; set; }
public double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
IShape rectangle = new Rectangle { Width = 5, Height = 4 };
IShape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
Рекомендации по использованию интерфейсов
Рекомендации по использованию интерфейсов
Вот несколько рекомендаций:
- Используйте интерфейсы для определения контрактов, которым должны следовать классы.
- Предпочитайте интерфейсы наследованию для несвязанных классов, имеющих общее поведение.
- Делайте интерфейсы целевыми и не включайте в них ненужные методы или свойства.
Совет: Интерфейсы должны описывать, что делает класс, а не то, как он это делает.
Отличная работа!
Отличная работа!
Поздравляем! Вы изучили основы интерфейсов и научились использовать их для достижения абстракции и гибкости в программах. В следующем уроке мы подробно разберём абстрактные классы и узнаем, чем они отличаются от интерфейсов. Продолжайте программировать!

Часто задаваемые вопросы
Урок «Введение в интерфейсы» бесплатный?
Да — полный текст урока «Введение в интерфейсы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 6 уроков всего.
Чему я научусь в уроке «Введение в интерфейсы»?
Узнайте, как интерфейсы задают контракты для классов и повышают гибкость кода Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 6.
Сколько времени занимает урок «Введение в интерфейсы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в интерфейсы
- Абстрактные классы
- Статические члены и методы
- Перечисления и структуры
- Делегаты и события
- Коллекции в C#: списки, словари и очереди