Общие сведения об интерфейсе

Содержание

Слайд 2

Общие сведения об интерфейсе Интерфейс представляет ссылочный тип, который может определять

Общие сведения об интерфейсе

Интерфейс представляет ссылочный тип, который может определять

некоторый функционал - набор методов и свойств без реализации. Затем этот функционал реализуют классы и структуры, которые применяют данные интерфейсы.
Интерфейс определяет поведение, которое поддерживается реализующими этот интерфейс классами.
Слайд 3

Общие сведения об интерфейсе Интерфейс может наследовать свойства нескольких интерфейсов, в

Общие сведения об интерфейсе

Интерфейс может наследовать свойства нескольких интерфейсов, в

этом случае предки перечисляются через запятую.
Тело интерфейса составляют абстрактные методы, шаблоны свойств и индексаторов, а также события.
Интерфейс не может содержать константы, поля, операции, конструкторы, деструкторы, типы и любые статические элементы.
Слайд 4

Интерфейсы или наследование классов? Если некий набор действий имеет смысл только

Интерфейсы или наследование классов?

Если некий набор действий имеет смысл только для

какой-то конкретной иерархии классов, реализующих эти действия разными способами, уместнее задать этот набор в виде виртуальных методов абстрактного базового класса иерархии.
То, что работает в пределах иерархии одинаково, предпочтительно полностью определить в базовом классе.
Интерфейсы чаще используются для задания общих свойств классов, относящихся к различным иерархиям.
Слайд 5

Отличия интерфейса от абстрактного класса элементы интерфейса по умолчанию имеют спецификатор

Отличия интерфейса от абстрактного класса

элементы интерфейса по умолчанию имеют спецификатор доступа

public и не могут иметь спецификаторов, заданных явным образом;
класс, в списке предков которого задается интерфейс, должен определять все его элементы, в то время как потомок абстрактного класса может не переопределять часть абстрактных методов предка (в этом случае производный класс также будет абстрактным);
класс может иметь в списке предков несколько интерфейсов, при этом он должен определять все их методы.
Слайд 6

Реализация интерфейса В C# поддерживается одиночное наследование для классов и множественное

Реализация интерфейса

В C# поддерживается одиночное наследование для классов и множественное —

для интерфейсов. Это позволяет придать производному классу свойства нескольких базовых интерфейсов, реализуя их по своему усмотрению.
Слайд 7

Операция is При работе с объектом через объект типа интерфейса бывает

Операция is

При работе с объектом через объект типа интерфейса бывает

необходимо убедиться, что объект поддерживает данный интерфейс.
Проверка выполняется с помощью бинарной операции is. Она определяет, совместим ли текущий тип объекта, находящегося слева от ключевого слова is, с типом, заданным справа.
Результат операции равен true, если объект можно преобразовать к заданному типу, и false в противном случае. Операция обычно используется в следующем контексте:
if ( объект is тип )
{
// выполнить преобразование "объекта" к "типу"
// выполнить действия с преобразованным объектом
}
Слайд 8

Операция as Операция as выполняет преобразование к заданному типу, а если

Операция as

Операция as выполняет преобразование к заданному типу, а если это невозможно,

формирует результат null:
static void Act( object A )
{
IAction Actor = A as IAction;
if ( Actor != null ) Actor.Draw();
}
Обе рассмотренные операции применяются как к интерфейсам, так и к классам.