Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
1
Добавлен:
24.09.2019
Размер:
522.24 Кб
Скачать

Вопрос 11) Классы и структуры Класс

Класс — это конструктор, который позволяет создавать свои собственные пользовательские типы путем группирования переменных других типов, методов и событий. Класс подобен чертежу. Он определяет данные и поведение типа. Если класс не объявлен статическим, то клиентский код может его использовать, создав объекты или экземпляры, назначенные переменной. Переменная остается в памяти, пока все ссылки на нее не выйдут из области видимости. В это время среда CLR помечает ее пригодной для сборщика мусора. Если класс объявляется статическим, то в памяти остается только одна копия и клиентский код может получить к ней доступ только посредством самого класса, а не переменной экземпляра.

Виды классов

  • Базовый (родительский) класс

  • Производный класс (наследник, потомок)

  • Абстрактный класс

  • Виртуальный класс

  • Интерфейс

Члены классов

Класс определяется как список своих членов. К членам класса относятся его поля (свойства) и функции (методы) .

Каждому члену класса можно установить его область доступа (access control level). Область доступа члена класса определяет участки кода, из которых к этому члену будет возможно обращаться. В большинстве объектно-ориентированных языков программирования поддерживаются следующие области доступа:

  • private (закрытый, внутренний член класса) — обращения к члену допускаются только из кода методов класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену;

  • protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из кода методов класса, в котором этот член определён, или из любых его классов-наследников;

  • public (открытый член класса) — обращения к члену допускаются из любого кода.

Структуры

Структуры используют большую часть того же синтаксиса, что и классы, однако они более ограничены по сравнению с ними.

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

  • Структура может не объявлять используемый по умолчанию конструктор (конструктор без параметров) или деструктор.

  • Структуры не могут наследовать от классов или других структур.

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

  • Структуры являются типами значений, а классы — ссылочными типами.

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

  • Структуры могут объявлять конструкторы, имеющие параметры.

  • Структура не может быть унаследованной от другой структуры или класса и не может быть основой для других классов. Все структуры наследуют непосредственно от System.ValueType, который наследует от System.Object.

  • Структуры могут реализовывать интерфейсы.

  • Структура может использоваться как тип, допускающий значение NULL, и ей можно назначить значение NULL.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]