Примечание. Необязательные атрибуты задают дополнительную информацию о классе

Необязательные атрибуты задают дополнительную информацию о классе. Посколь­ку наша задача пока состоит в том, чтобы освоить основные понятия, мы отложим знакомство с атрибутами до главы 12.

№ Спецификатор Описание

1 new Используется для вложенных классов. Задает новое описание

класса взамен унаследованного от предка. Применяется в ерархиях

объектов, рассматривается в главе 8 (см. с. 175)

2 public Доступ не ограничен

3 protected Используется для вложенных классов. Доступ только из элементов

данного и производных классов

4 internal Доступ только из данной программы (сборки)1

5 protected internal Доступ только из данного и производных классов или из данной

программы (сборки)

6 private Используется для вложенных классов. Доступ только из элементов

класса, внутри которого описан данный класс

7 abstract Абстрактный класс. Применяется в иерархиях объектов,

рассматривается в главе 8 (см. с. 181)

8 sealed Бесплодный класс. Применяется в иерархиях объектов,

рассматривается в главе 8 (см. с. 182)

9 static Статический класс. Введен в версию языка 2.0. Рассматривается в

разделе «Конструкторы» (см. с. 114)

Спецификаторы 2-6 называются спецификаторами доступа. Они определяют, откуда можно непосредственно обращаться к данному классу. Спецификаторы доступа могут присутствовать в описании только в вариантах, приведенных в таб­лице, а также могут комбинироваться с остальными спецификаторами.

В этой главе мы будем изучать классы, которые описываются в пространстве имен непосредственно (то есть не вложенные классы). Для таких классов до­пускаются только два спецификатора: public и internal. По умолчанию, то есть если ни один спецификатор доступа не указан, подразумевается специфика­тор internal.

Класс является обобщенным понятием, определяющим характеристики и пове­дение некоторого множества конкретных объектов этого класса, называемых эк­земплярами, или объектами, класса.

Объекты создаются явным или неявным образом, то есть либо программистом, либо системой. Программист создает экземпляр класса с помощью операции new, например:

Demo a = new Demo(); // создание экземпляра класса Demo

Demo b = new Demo(); // создание другого экземпляра класса Demo

ПРИМЕЧАНИЕ

Как вы помните, класс относится к ссылочным типам данных, память под которые выделяется в хипе (см. раздел «Типы-значения и ссылочные типы» на с. 35). Таким образом, переменные xи y хранят не сами объекты, а ссылки на объекты, то есть их адреса. Если достаточный для хранения объекта объем памяти выделить не уда­лось, операция new генерирует исключение OutOfMemoryException. Рекомендуется предусматривать обработку этого исключения в программах, работающих с объек­тами большого объема.

Для каждого объекта при его создании в памяти выделяется отдельная область, в которой хранятся его данные. Кроме того, в классе могут присутствовать ста­тические элементы, которые существуют в единственном экземпляре для всех объектов класса. Часто статические данные называют данными класса, а осталь­ные — данными экземпляра.

Функциональные элементы класса не тиражируются, то есть всегда хранятся в единственном экземпляре. Для работы с данными класса используются мето­ды класса {статические методы), для работы с данными экземпляра — методы экземпляра, или просто методы.

До сих пор мы использовали в программах только один вид функциональных элементов класса — методы. Поля и методы являются основными элементами класса. Кроме того, в классе можно задавать целую гамму других элементов: свойства, события, индексаторы, операции, конструкторы, деструкторы, а также типы (рис. 5.1). Ниже приведено краткое описание всех элементов класса (см. также рис. 5.1):

Константы класса хранят неизменяемые значения, связанные с классом.

Поля содержат данные класса.

Методы реализуют вычисления или другие действия, выполняемые классом
или экземпляром.

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

Конструкторы реализуют действия по инициализации экземпляров или клас­
са в целом.

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

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

Операции задают действия с объектами с помощью знаков операций.

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

Типы — это типы данных, внутренние по отношению к классу.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: