Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

Глава 10. Класс как совокупность статических

членов

10.1. Статические члены класса

Мы уже отмечали, что класс в общем случае представляет собой "трафарет"

для создания объектов (этого класса) и "оболочку", в которую заключены

статические члены (например, поля и методы). Остановимся подробнее на второй из

названных ролей класса – рассмотрим класс как совокупность статических членов.

При этом обратим внимание читателя, что в программе кроме класса, включающего

метод Main(), может присутствовать любое число других классов. В этой главе

будем определять классы с помощью объявлений такого формата:

class имя_класса

тело_класса

Здесь

class служебное (ключевое) слово; имя_класса – идентификатор,

выбранный

программистом

в

качестве

имени

класса ;

тело _ класса

"класс:тело_класса"

– заключенная в фигурные скобки последовательность

объявлений (деклараций) статических членов класса

"класс:статические члены

класса" . (Сразу же отметим, что статический характер членов класса это совсем

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

в этой главе.)

Имеется две разных возможности определить член класса как статический. С

помощью модификатора static объявляются статические:

поле (field);

метод (method);

свойство (property);

событие (event);

операция (operator);

конструктор (constractor).

Кроме того, без модификатора

static по умолчанию объявляются как

статистические члены класса:

константы;

локализованные в классе типы (например, вложенные классы)

.

Для целей данной главы ограничимся статическими полями, статическими

методами, статическими конструкторами и статическими константами. Статические

методы, которые мы подробно рассмотрели в предыдущей главе, будем считать

хорошо знакомыми.

При объявлении члена класса он может быть снабжён одним или несколькими

модификаторами. В этой главе нам полезно познакомиться со следующими: static,

public, protected, internal, private, readonly, volatile. Модификатор static мы уже

назвали.

Применялся

в

предыдущих

программах

и

модификатор

public

"модификатор:модификатор public" . Его назначение – сделать член класса

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

доступность членов класса. Проще всего объяснить правила доступа к членам

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

доступа:модификатор доступа protected" :

"модификатор

В объяснении модификаторов доступа

"модификатор доступа:модификатор

доступа public" нам впервые встречается термин "сборка" (assembly). В Стандарте

C# [2] сборка определяется как совокупность из одного или нескольких файлов,

которые создаёт компилятор как результат компиляции программы. В зависимости

от того, какие средства и режимы компиляции выбраны, можно создать

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

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

public

(открытый)

доступен без ограничений всем методам

всех сборок;

protected – (защищещённый)

доступен в классе и в любом классе,

производном от данного;

internal

(внутренний)

доступен везде в пределах сборки;

protected internal

(защищённый внутренний)

доступен в пределах сборки, в пределах

класса и в любом классе, производном

от данного;

private

(закрытый)

доступен только в классе и вложенных

в него типах (классах).

существовании такого понятия.

Каждый член класса может быть снабжен одним и только одним

модификатором доступа. По умолчанию (при отсутствии модификатора) члену

приписывается статус доступа private, то есть член класса недоступен вне класса,

где он объявлен.

Для

обращения

к

статистическому

члену

класса

используется

квалифицированное имя "квалифицированное имя" :

имя_класса.имя_члена

Так как мы уже использовали статические члены библиотечных классов,

например, Math.PI и Console.WriteLine(), то нам уже знаком этот синтаксис.

Внутри

класса,

которому

принадлежит

статический

член,

разрешено

использовать имя члена без указания имени класса.

Внимание:

никакие

операторы,

отличные

от

объявлений,

в

классе

недопустимы!

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