Скачиваний:
62
Добавлен:
24.03.2015
Размер:
165.38 Кб
Скачать

Глава 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 - доступен в классе и в любом классе, производном

(защищещённый) от данного;

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

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

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

internal - любом классе, производном от данного;

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

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

(закрытый) типах (классах).

В объяснении модификаторов доступа нам впервые встречается термин "сборка" (assembly). В Стандарте С# [2] сборка определяется как совокупность из одного или нескольких файлов, которые создаёт компилятор как результат компиляции программы. В зависимости от того, какие средства и режимы компиляции выбраны, можно создать однофайловую или многофайловую сборку. Сборка позволяет рассматривать группу файлов как единую сущность. Сейчас достаточно, чтобы читатель знал о существовании такого понятия.

Каждый член класса может быть снабжен одним и только одним модификатором доступа. По умолчанию (при отсутствии модификатора) члену приписывается статус доступа private, то есть член класса недоступен вне класса, где он объявлен.

Для обращения к статистическому члену класса используется квалифицированное имя:

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

Так как мы уже использовали статические члены библиотечных классов, например, Math.PI и Console.WriteLine(), то нам уже знаком этот синтаксис.

Внутри класса, которому принадлежит статический член, разрешено использовать имя члена без указания имени класса.

Внимание: никакие операторы, отличные от объявлений, в классе недопустимы!

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