Что такое интерфейс в C# с примером
⚡ Умное резюме
В C# интерфейс определяетtracЭто класс, который определяет, какие методы и свойства должен реализовывать класс, не предоставляя при этом сам код. Реализующий класс обеспечивает конкретное поведение, позволяя использовать слабую связанность и множественное наследование между несвязанными типами.

Что такое интерфейс в C#?
An Интерфейс В C# используется вместе с классом для определения конфигурации.tracЭто соглашение о том, что класс будет предоставлять приложению. Интерфейс определяет, какие операции может выполнять класс. Интерфейс объявляет свойства и методы. Класс должен точно определить, что будет делать метод.
Давайте рассмотрим пример интерфейса путем изменения классов в нашем Консольном приложении. Обратите внимание: мы не будем запускать код, поскольку нет ничего, что можно было бы запустить с помощью интерфейса.
Пример интерфейса C#
Давайте создадим интерфейсный класс. Класс будет называться «Guru99Interface." Затем наш основной класс будет расширять определенный интерфейс. Весь код необходимо написать в файле Program.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface IGuru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : IGuru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Объяснение:-
Здесь мы объясняем важные разделы кода
- Сначала мы определяем интерфейс, который называется «Guru99Интерфейс.” Обратите внимание, что ключевое слово «интерфейс» используется для определения интерфейса.
- Далее мы определяем методы, которые будут использоваться нашим интерфейсом. В данном случае мы определяем те же методы, которые использовались во всех предыдущих примерах. Обратите внимание, что интерфейс просто объявляет методы. Он не определяет код в них.
- Затем мы делаем свой GuruКласс 99Tutorial расширяет интерфейс. Здесь мы пишем код, определяющий различные методы, объявленные в интерфейсе. Такой подход позволяет достичь следующих результатов.
- Это гарантирует, что класс, Guru99Tutorial добавляет только тот код, который необходим для методов «SetTutorial» и «GetTutorial», и ничего больше.
- Это также гарантирует, что интерфейс будет вести себя как...tracт. класс должен соблюдать правилаtracт. Так что, если конtracТам сказано, что у него должно быть два метода: «SetTutorial» и «GetTutorial», так оно и должно быть.
Интерфейс C# против Abstracт класс
Часто начинающие задаются вопросом, чем интерфейс C# отличается от интерфейса C#. ABStracт классОба определяют понятие «кон».tracДругие типы не следуют этому примеру, однако они преследуют иные цели проектирования.
Основные отличия перечислены ниже:
- Реализация: Интерфейс содержит только объявления, тогда как абстракцияtracТ-класс может обеспечить как АБС, так и АБС.tract участников и полностью внедренные методы.
- Множественное наследование: Класс может реализовывать множество интерфейсов, но может наследовать только один из них.tracкласс Т.
- Район: Ан абсtracКласс `t` может хранить поля, конструкторы и свойства с данными, тогда как интерфейс не может хранить состояние экземпляра.
- Модификаторы доступа: AbstracЧлены класса могут быть публичными, защищенными или приватными, в то время как члены классического интерфейса по умолчанию являются публичными.
- Случай использования: Используйте интерфейс для добавления возможностей между несвязанными типами, а также абстракцию.tracКласс t позволяет использовать общий код для тесно связанных типов.
Короче говоря, интерфейс описывает, что может делать класс, а абстракцияtracКласс t также может определять часть того, как это делается.
Как реализовать несколько интерфейсов в C#
В отличие от наследования классов, C# позволяет одному классу реализовывать более одного интерфейса. Именно так язык предлагает безопасную форму множественного наследования без неоднозначности, возникающей при одновременном наследовании нескольких базовых классов.
Для реализации нескольких интерфейсов их следует перечислить после имени класса, разделяя каждый запятой. Затем класс должен определить каждый метод, объявленный в каждом реализуемом им интерфейсе.
Шаг 1) Объявите два интерфейса, каждый со своим методом.
Шаг 2) Создайте класс, реализующий оба интерфейса, разделяя имена интерфейсов запятой.
Шаг 3) Для каждого члена, объявленного в каждом интерфейсе, необходимо предоставить тело метода.
В приведенном ниже примере показан класс Document, который реализует как интерфейс I.Readable и интерфейс IWritable.
using System; namespace DemoApplication { interface IReadable { void Read(); } interface IWritable { void Write(); } class Document : IReadable, IWritable { public void Read() { Console.WriteLine("Reading the document"); } public void Write() { Console.WriteLine("Writing to the document"); } static void Main(string[] args) { Document doc = new Document(); doc.Read(); doc.Write(); Console.ReadKey(); } } }
Code Объяснение:-
- Мы объявляем два интерфейса, IReadable и IWritable. Каждый интерфейс объявляет один метод без тела.
- Класс Document перечисляет оба интерфейса после двоеточия, разделяя их запятой, чтобы обеспечить совместимость с обоими интерфейсами.tracц.
- Затем в классе определяются методы Read и Write. Пропуститьping Любой из этих методов приведет к ошибке компиляции.
- Метод Main создает объект Document и вызывает оба метода, доказывая, что класс удовлетворяет двум интерфейсам.
При запуске программа выводит сообщение на экран. Чтение документа на первой линии и Запись в документ на второй строке. Этот шаблон сохраняет каждый элемент.tracНебольшой и сфокусированный класс Document упрощает тестирование и расширение.
Преимущества использования интерфейсов в C#
Интерфейсы широко используются в профессиональных проектах на C#, поскольку они делают код гибким и упрощают его сопровождение. Они позволяют программировать в соответствии с определенными условиями.tracа не к конкретному классу.
К основным достоинствам можно отнести:
- Слабая связь: Code Зависит от интерфейса, а не от конкретного класса, поэтому реализация может изменяться без нарушения работы вызывающих функций.
- Множественное наследование: Класс может наследовать поведение от нескольких интерфейсов, чего не допускает обычное наследование классов.
- Тестируемость: Интерфейсы упрощают замену реального класса на фиктивный объект во время модульного тестирования.
- Внедрение зависимости: Фреймворки внедряют реализацию интерфейса во время выполнения, что является ключевой идеей принципов SOLID.
- Консистенция: Каждый реализующий класс обязан предоставлять один и тот же набор членов, что обеспечивает предсказуемость API.
Благодаря этим преимуществам интерфейсы лежат в основе большинства современных шаблонов проектирования и фреймворков приложений в C#.

