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

Область видимости - модуль.

Слова Dim или Private для переменной и слова Const или Private Const для константы делают их видимыми только в своем модуле. Их область видимости - весь этот модуль, включая все процедуры, функции и другие моду­ли (если они есть) внутри модуля. Это модульные переменные и константы.

Обратите внимание, что здесь можно было бы обойтись и без модификатора Private. Но английский смысл слова Private ("частная собственность", "вход запрещен") лучше подходит к случаю, поэтому программисты в основном используют его.

Любой другой элемент (процедура, функция, модуль), чтобы быть видимым аналогичным образом только в своем модуле, объявляется модификатором Private.

Область видимости - проект, но не дальше. Если мы хотим, чтобы элемент VB был виден во всем проекте, но не дальше, мы объявляем его модификатором Friend. Часто программистам все равно - дальше или не дальше, и поэтому они употребляют вместо Friend более привычный модификатор Public, обеспечивающий неограниченную видимость.

Неограниченная область видимости.

Модификатор Public делает элемент неогра­ниченно видимым. Часто такие элементы называют глобальными.

Видимость по умолчанию. Если вы совсем уберете модификатор доступа к классам, структурам и модулям:

Class Класс1

End Class

они по умолчанию будут иметь доступ Friend.

Если вы совсем уберете модификатор доступа к процедуре или функции они по умолчанию будут иметь доступ Public.

Имейте в виду, что элементу с неограниченной областью видимости не гарантирована эта неограниченная видимость, если он объявлен внутри элемента с ограниченной видимостью.

Область видимости - классы-наследники. Есть еще одна область видимости, которая не совпадает ни с одной из упомянутых и имеет отношение к наследованию классов. К ней относятся модификаторы Protected и Protected Friend.

Затенение

Переменные и другие программные элементы разных модулей или разных процедур вполне могут иметь одинаковые имена. Спрашивается, как VB определяет, какой из видимых одноименных элементов имеется в виду в каждом конкретном случае? Здесь вступает в действие эффект затенения: из нескольких одноименных элементов всегда имеется в виду более локальный, т. е. тот, чья зона видимости меньше. Это значит, что локальные элементы имеют предпочтение перед модульными, а те - перед глобальными. В этом есть глубокий смысл. Программист, объявляющий элемент в своей процедуре, может не заботиться о том, что где-то в модуле есть элементы с тем же именем. А программист, объявляющий элементы в своем модуле, может не заботиться о том, что элементы с тем же именем есть где-то в проекте.