Когда вы создаете или добавляете новое Свойство или Метод для некоторого пользовательского или стандартного Класса, например в Дизайнере Классов, вы можете обеспечить различные уровни доступности изащиты к данным свойствам или методам: Public, Protected, Hidden.Когда вы создаете класс при помощи команды (в программном модуле) DEFINE CLASS, вы можете использовать ключевые секции (или опции), такие как PROTECTED или HIDDEN.
По-умолчанию, Свойства и Методы в классах создаются с атрибутом Public, что обеспечивает возможность изменять и переопределять данные Свойства и Методы в порождаемых Классах или создаваемых Объектах, использовать прямые вызовы программного кода данных методов. Тем не менее, для некоторых разрабатываемых классов имеет смысл и необходимость ограничить доступ к некоторым Свойствам, и отключить внешний вызов Методов класса. Вы можете определить характеристику рассматриваемого Свойства или Метода как Protected, что ограничит доступ к данным элементам помимо класса или подклассов (то есть, они будут доступны только внутри класса). Вы можете также использовать характеристику Hidden для данных членов класса (свойств или методов), в этом случае эти элементы будут недоступны другим членам класса (скрыты для "родственников").
Например, предположим вы создаете некоторый Класс, в котором содержится информация "для служебного пользования", и вы не хотите, чтобы пользователи не могли изменять некоторое поле, содержащее информацию о служащем. Вы можете создать требуемое Свойство с реквизитом Protected, и вместе с этим , создать пользовательский метод, возвращающий значение защищенной информации, которую пользователь моржет просматривать, и только. В следующем далее примере проограммного кода: создается пользовательский класс Employee, при помощи команды DEFINE CLASS, свойство HireDate определяется с атрибутом Protected, смотрите опцию PROTECTED, но имеется мотод с именем GetHireDate, который возвращает требуемое значение:
![]() |
|
---|---|
DEFINE CLASS Employee AS CUSTOM |
Дополнительную информацию смотрите в разделе: DEFINE CLASS, команда.
Стандартный пример Visual FoxPro, Использование Секундомера, пример, также иллюстрирует использование защищенных свойств и методов пользовательского Класса.