Реализация интерфейса
После списка базовых классов через запятую
перечисляют интерфейсы. Класс обязан
реализовать каждый член контракта с
public
доступом, если не используют
явную реализацию.
Один класс может реализовать несколько
интерфейсов сразу.
Синтаксис
class Имя : IContract
{
public тип Член()
{
// тело
}
}
Пример
Давайте реализуем интерфейс с одним методом:
using System;
interface IText
{
string GetText();
}
class Row : IText
{
public string GetText()
{
return "abcde";
}
}
class Program
{
static void Main()
{
IText item = new Row();
Console.WriteLine(item.GetText());
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте реализуем два интерфейса в одном классе:
using System;
interface ICode
{
string GetCode();
}
interface ILength
{
int GetLength();
}
class Token : ICode, ILength
{
public string GetCode()
{
return "12345";
}
public int GetLength()
{
return 5;
}
}
class Program
{
static void Main()
{
var token = new Token();
Console.WriteLine(token.GetCode() + " " + token.GetLength());
}
}
Результат выполнения кода:
12345 5
Пример
Давайте проверим тип через is:
using System;
interface IMarker
{
}
class Tag : IMarker
{
}
class Program
{
static void Main()
{
object obj = new Tag();
Console.WriteLine(obj is IMarker);
}
}
Результат выполнения кода:
True
Смотрите также
-
наследование,
которое передаёт реализацию базового класса -
явная реализация,
которая скрывает член за именем интерфейса -
реализация по умолчанию,
которая задаёт тело метода в интерфейсе -
Object,
от которого неявно наследуют все типы