Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop_1 / ЛК / Лекция 12КлассыООП.doc
Скачиваний:
44
Добавлен:
10.06.2015
Размер:
114.69 Кб
Скачать

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

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

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

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

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

Деструкторы

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

Интерфейсы

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

Интерфейс содержит:

  • Методы

  • Свойства

  • Индексаторы

  • События

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

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

interface Имя

{

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

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

}

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

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

  • Класс или структура может наследовать несколько интерфейсов.

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

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

У интерфейсов могут быть свойства, методы и события, являющиеся абстрактными членами. Это значит, что хотя в интерфейсе и объявляются члены и их сигнатуры, за определение функций этих членов отвечает тип, реализующий данный интерфейс. Любой класс, реализующий интерфейс, должен содержать определения абстрактных членов, объявленных в этом интерфейсе.

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

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

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

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

  • В интерфейсах нельзя определять поля.

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

  • Поскольку член с одинаковой подписью может быть объявлен в нескольких интерфейсах, и эти члены могут иметь отдельные реализации, каждый язык должен предоставлять правила сопоставления реализации и интерфейса, для которого необходим данный член.

Соседние файлы в папке ЛК