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

10.6. Статические классы

Как рекомендует Стандарт C# [2], классы, которые не предназначены для

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

о

объявлять статическими. В .NET Framework такими классами являются

System.Control

и

System.Environment.

Перечислим

основные

особенности

статистических классов.

В статических классах

нет конструкторов экземпляров (объектов) и эти

классы не могут служить базовыми классами при наследовании. (Наследование

рассматривается в главе 13.) Статические классы могут использоваться только с

операцией typeof и средствами доступа к членам класса. В частности, статический

класс

"класс:статический класс"

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

переменной и не может выступать в качестве типа параметра.

В заголовок объявления статического класса входит модификатор static. В

отличие от других классов статический класс нельзя объявить с модификаторами

sealed и abstract. Однако, так как статический класс не участвует в иерархиях

наследования, именно свойства классов с этими модификаторами присущи

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

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

Кроме

того,

статический

класс

не

может

реализовывать

интерфейсы.

(Интерфейсам посвящена глава 14.) Статический класс имеет только один базовый

класс System.Object.

Так как статический класс не может быть базовым, то для его членов

запрещены модификаторы protected и protected internal. Для членов статического

класса в качестве модификаторов доступа можно использовать только public и

private.

Несмотря на наличие модификатора static в заголовке статического класса, все

его члены, отличные от констант и вложенных типов (классов), должны быть

объявлены с явно указанным модификатором static.

Статические

классы

удобно

применять

для

логического

объединения

функционально близких методов.

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

е

классы этой главы включают только статические члены и каждый из этих классов

может быть снабжен заголовком

static class имя_класса

В заключение отметим ещё раз, что класс нельзя объявить статическим, если в

его объявлении присутствует хотя бы один нестатический член.

Контрольные вопросы

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

Какие члены класса являются статическими без применения модификатора static?

Перечислите модификаторы доступа.

Можно ли в объявлении члена класса использовать два модификатора доступа?

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

к нему извне класса.

Что такое поле класса?

Когда статическое поле размещается в памяти?

Можно ли в объявлении статического поля использовать модификатор доступа?

Что такое список объявлений поля?

Назовите формы инициализаторов полей.

Что разрешено использовать в инициализирующем выражении статического поля?

Как выполняется инициализация статических полей при отсутствии

инициализаторов?

Объясните последовательность инициализации статических полей.

Какой статус доступа у статического поля при отсутствии модификатора доступа?

Как объявляются константы, принадлежащие классу?

Сформулируйте правила инициализации констант класса.

В чём отличие статических констант от статических полей с модификатором

readonly.

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

Что такое статический конструктор?

Сколько статических конструкторов в классе?

Какова спецификация параметров статического конструктора?

Как и когда вызывается статический конструктор?

Какие члены объявления класса доступны в теле статического конструктора?

Перечислите особенности статических классов.

Какие модификаторы не могут входить в объявление статического класса?

Какие модификаторы могут входить в объявления членов статического класса?

Может ли в статический класс входить нестатический рекурсивный метод?

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