Интерфейсы

Деструкторы

Конструкторы

В каждом классе существует конструктор — метод с тем же именем, что и у класса. Конструктор представляет собой специальный метод класса, позволяющий создавать объекты класса. У конструктора две синтаксические особенности:

- Имя конструктора фиксировано и совпадает с именем класса,

- Для конструктора не задается возвращаемое значение.

Обычно конструкторы задают начальные значения переменных, определенных в классе. Конструкторы не используются, если начальным значением для числовых типов данных будет ноль, "false" для логических типов данных или null для ссылочных типов, поскольку эти типы данных инициализируются автоматически.

Если задача создания объектов полностью возлагается на программиста, то задача удаления ненужных объектов в VS.Net снята с программиста и возложена на инструментарий – сборщик мусора. Деструктор вызывается автоматически и служит для удаления объектов и освобождения ресурсов, занятых объектом, в первую очередь оперативной памяти. Деструктор является фактически финализатором (finalizer), используемым в исключительных ситуациях.

В C# допускается только одиночное наследование. Другими словами, класс может наследовать реализацию только от одного базового класса. Однако класс может реализовать несколько интерфейсов. Через интерфейс реализуется множественное наследование.

Интерфейс содержит: Методы Свойства Индексаторы События

Синтаксис интерфейса:

interface Имя

{

ПодписьМетода;

ПодписьСвойства;

}

Классы и структуры могут быть унаследованы от интерфейсов таким же образом, как классы могут быть унаследованы от базового класса или структуры, но есть два исключения:

Класс или структура может наследовать несколько интерфейсов. Когда класс или структура наследует интерфейс, наследуются только имена и подписи методов, поскольку сам интерфейс не содержит реализаций.

Интерфейс используется для создания класса, в котором применяются методы разных классов. Множественное наследование в C# запрещено. Интерфейс задает контракт, определяющий отношение типа "может" или "имеет".

К интерфейсам применяются следующие ограничения.

Интерфейс может быть объявлен с любой доступностью, однако, члены интерфейса всегда должны иметь доступность уровня public.

К членам интерфейса или к самому интерфейсу не могут быть присоединены никакие разрешения безопасности.

В интерфейсах нельзя определять конструкторы. Нельзя определять поля.

Все абстрактные свойства, методы и события, определенные в интерфейсе, должны быть членами экземпляра; они не могут быть статическими членами.