59 lines
2.6 KiB
Markdown
59 lines
2.6 KiB
Markdown
---
|
||
title: Interface
|
||
localeTitle: Интерфейс
|
||
---
|
||
* * *
|
||
|
||
Интерфейс похож на класс или структуру, но без реализации для его членов. Интерфейс объявляет контракт или поведение, которое должны иметь классы реализации. Он может объявлять только свойства, методы и события без модификаторов доступа NO.
|
||
|
||
Все объявленные участники должны быть реализованы в классе, предназначенном для ангаров, иначе будет ошибка компиляции. в качестве условного обозначения мы будем отмечать интерфейс с буквой I при запуске (IMyInterface || IUserOptions). Вы определяете интерфейс, используя ключевое слово интерфейса.
|
||
|
||
Все члены интерфейса: неявно абстрактно, неявно публичный, не может объявить модификатор доступа, такой как защищенный, внутренний частный и т. д. ...
|
||
|
||
Интерфейс может:
|
||
|
||
* Наследовать от других интерфейсов.
|
||
* Наследовать от нескольких интерфейсов одновременно
|
||
* Содержит только методы, свойства, события и индексаторы.
|
||
|
||
Интерфейс не может:
|
||
|
||
* Наследовать от класса.
|
||
* Имейте реализацию.
|
||
* Имеют модификаторы доступа, кроме публики.
|
||
|
||
## \* Будь создан.
|
||
|
||
Использование интерфейсов позволяет нам изменить нашу реализацию в нашем проекте, не нарушая других частей, и только нужно изменить одно место, где создается объект.
|
||
|
||
Пример интерфейса:
|
||
|
||
```csharp
|
||
public Interface IUserFavoriteFood
|
||
{
|
||
void AddFood();
|
||
Task<User> EatFavoriteFood(int id);
|
||
}
|
||
```
|
||
|
||
* * *
|
||
|
||
Наследование интерфейсов и их реализация:
|
||
|
||
```csharp
|
||
public class UserHungry : IUserFavoriteFood
|
||
{
|
||
public AddFood()
|
||
{
|
||
// Implementation:
|
||
// A method to add food.
|
||
}
|
||
|
||
public Task<User> EatFavoriteFood(int id)
|
||
{
|
||
// Implementation:
|
||
// A method to Eat food by id.
|
||
}
|
||
}
|
||
|
||
``` |