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

5. Понятие классов и экземпляров классов.

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

Класс – это абстрактный тип данных. Другими словами, класс – это некоторый шаблон, на основе которого будут создаваться его экземпляры –объекты. В Си-шарп классы объявляются с помощью ключевого слова class. Общая структура объявления выглядит следующим образом: [модификатор доступа]class[имя_класса]{//тело класса} Модификаторов доступа для классов есть два: - public – доступ к классу возможен из любого места одной сборки либо из другой сборки, на которую есть ссылка; - internal – доступ к классу возможен только из сборки, в которой он объявлен.

Члены класса Классы в Си-шарп могут содержать следующие члены:- поля;- константы;- свойства;- конструкторы;- методы;- события;- операторы;- индексаторы;- вложенные типы. Все члены класса, как и сам класс, имеют свой уровень доступа. Только у членов их может быть уже пять: - public – доступ к члену возможен из любого места одной сборки, либо из другой сборки, на которую есть ссылка; - protected – доступ к члену возможен только внутри класса, либо в классе-наследнике (при наследовании); - internal – доступ к члену возможен только из сборки, в которой он объявлен; - private – доступ к члену возможен только внутри класса; - protected internal - доступ к члену возможен из одной сборки, либо из класса-наследника другой сборки. Не указав модификатор доступа для члена, по умолчанию ему будет присвоен режим private.

6. Описание классов(class, struct).

Классы — это ссылочные типы, размещаемые в куче, структуры — типы значений, размещаемые в стеке (Пример)

Структура подобна классу, но относится к типу значения, а не к ссылочному типу данных. Т.е. структуры отличаются от классов тем, как они сохраняются в памяти и как к ним осуществляется доступ (классы — это ссылочные типы, размещаемые в куче, структуры — типы значений, размещаемые в стеке), а также некоторыми свойствами (например, структуры не поддерживают наследование). Из соображений производительности вы будете использовать структуры для небольших типов данных. Однако в отношении синтаксиса структуры очень похожи на классы.

Главное отличие состоит в том, что при их объявлении используется ключевое слово struct вместо class. Ниже приведена общая форма объявления структуры:

struct имя : интерфейсы {

// объявления членов}

где имя обозначает конкретное имя структуры.

Как и у классов, у каждой структуры имеются свои члены: методы, поля, индексаторы, свойства, операторные методы и события. В структурах допускается также определять конструкторы, но не деструкторы. В то же время для структуры нельзя определить конструктор, используемый по умолчанию (т.е. конструктор без параметров). Дело в том, что конструктор, вызываемый по умолчанию, определяется для всех структур автоматически и не подлежит изменению. Такой конструктор инициализирует поля структуры значениями, задаваемыми по умолчанию. А поскольку структуры не поддерживают наследование, то их члены нельзя указывать как abstract, virtual или protected.