Реализация по умолчанию в интерфейсе
В объявлении интерфейса методу задают тело
с модификатором доступа по умолчанию. Класс,
реализующий интерфейс, может не объявлять
такой член - сработает общая реализация.
При необходимости метод всё равно можно
перекрыть обычной реализацией.
Синтаксис
interface IName
{
тип Метод()
{
// тело по умолчанию
}
}
Пример
Давайте вызовем метод с реализацией по умолчанию:
using System;
interface IGreet
{
string Say()
{
return "abcde";
}
}
class Worker : IGreet
{
}
class Program
{
static void Main()
{
IGreet item = new Worker();
Console.WriteLine(item.Say());
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте переопределим метод по умолчанию в классе:
using System;
interface ICode
{
string GetCode()
{
return "12345";
}
}
class Custom : ICode
{
public string GetCode()
{
return "abcde";
}
}
class Program
{
static void Main()
{
ICode item = new Custom();
Console.WriteLine(item.GetCode());
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызовем другой метод интерфейса из тела по умолчанию:
using System;
interface IPair
{
string First()
{
return "1";
}
string Both()
{
return First() + "2";
}
}
class Pair : IPair
{
}
class Program
{
static void Main()
{
IPair item = new Pair();
Console.WriteLine(item.Both());
}
}
Результат выполнения кода:
"12"
Смотрите также
-
реализация интерфейса,
которая выполняет контракт в классе -
статика в интерфейсе,
которая задаёт static-члены контракта -
явная реализация,
которая вызывает член по имени интерфейса -
ToString,
который часто переопределяют в классе