Интерфейсы в C# (си шарп)

Использование интерфейсов напоминает создание базовых и дочерних классов. В C# (си шарп) невозможно напрямую использовать множественное наследование классов, то есть дочерний класс не может наследовать несколько базовых, и эта проблема решается с помощью интерфейсов. Члены интерфейсов по умолчанию доступны всей программе.

Иначе говоря, в них описываются методы, присущие любым классам или структурам в текущей программе. Появляется возможность множественного наследования: один класс или структура могут наследовать несколько интерфейсов.
Интерфейсы похожи на абстрактные классы: метод, объявленный в интерфейсе, пустой, то есть не содержит исполняемого кода, называемого реализацией метода. Поэтому он обязательно должен быть переопределен в нужном классе. Чтобы не возникало путаницы, уточним, что невозможно напрямую создать объект интерфейса, несмотря на то, что это практически абстрактный класс.
С точки зрения концепции интерфейсы могут связать между собой части кода, которые не могут быть связаны другими способами. Свойство или метод, объявленные в интерфейсе, а затем переопределенные в классе, дают гарантию того, что у класса реализованы все методы и свойства, и не осталось пустых.
В названии интерфейса принято использовать заглавную букву I. Интерфейс объявляется с помощью ключевого слова interface. Так, например, будет выглядеть класс, наследующий интерфейс:

interface ISurface
{
void Paint();
}
class SampleClass : ISurface
{
public void Paint()
{
//здесь описывается реализация метода

}

}

Внутри интерфейса можно объявлять свойства, которые также будут переопределяться в нужном классе. Обобщая то, что уже сказано до примера, уточним, что это называется подпиской: целевой класс получает не метод или свойство с реализацией целиком, а лишь подписывается на этот метод или свойство, то есть, говоря своими словами, получает его название. Приведем пример с интерфейсом, содержащим свойство:

interface IMan
{
string Name
{
get;
set;
}

}

public class People : IMan
{

private string name;
public string Name
{
get {return name; }
set {name = value; }
}

public People()
{name = «no name»;}
}

Головная программа:

People e1 = new People();
e1.Name = “Иванов Иван;”
System.Console.WriteLine(«People name: {0}», e1.Name);

В интерфейсе IMan объявлено свойство Name, предоставляющее возможности чтения (get) и записи (set). В классе People чтение и запись переопределяются. Правильно говорить так: класс People реализует интерфейс IMan. В головной программе создается объект класса People. У этого объекта есть свойство Name, унаследованное от интерфейса – присваиваем этому свойству значение и выводим на экран.

. библиотечный класс в си шарпе
. c# интерфейс
Комментирование и размещение ссылок запрещено.