Закрытые и дружественные члены класса
Модули классов могут также содержать и закрытые
(private) процедуры. Эти процедуры могут быть вызваны внутри программного кода класса, но другие приложения, которые используют класс, их вызвать не могут. Если необходимо отследить, сколько раз вызывается метод в течение работы приложения, можно добавить функцию:
Private Function CallCounter() As Integer
Static Popularity As Integer
Popularity = Popularity + 1
CallCounter = Popularity
End Function
Эта функция может быть вызвана из кода класса, но приложение, использующее этот класс, функцию CallCounter() не видит. Так как CallCounter() - закрытая функция, она не является методом класса - это обычная функция кода класса. Можно добавить эту функцию в проект CTimer и увидеть, что к ней невозможен доступ из другого приложения.
В добавление к закрытым и общедоступным членам, классы имеют третий тип модификатора области видимости, имеющий название Friend (дружественный). Дружественные члены являются общедоступными для всего проекта и доступны всем классам проекта. Общедоступные переменные Standard ЕХЕ-проекта доступны всем другим модулям и формам. В стандартном ЕХЕ-приложении это самая широкая область видимости, которую может иметь переменная. У компонентов ActiveX, общедоступные члены которых доступны также и из других приложений, есть другой тип, который делает члены доступными из любых частей приложения, но не извне его. Запомните, что только методы (функции или процедуры) и свойства могут быть объявлены как дружественные. Переменные - только как закрытые, либо общедоступные. Это означает, что модули классов ActiveX DLL-проекта могут связываться друг с другом посредством вызова дружественных методов и свойств.