28. Компоненты и область действия
28. Компоненты и область действия
Область действия идентификатора компоненты простирается за пределы объектного типа. Более того, область действия идентификатора компонента простирается сквозь блоки процедур, функций, конструкторов и деструкторов, которые реализуют методы объектного типа и его наследников. Исходя из этих соображений, идентификатор компоненты должен быть уникальным внутри объектного типа и внутри всех его наследников, а также внутри всех его методов.
В описании объектного типа заголовок метода может задавать параметры описываемого объектного типа, даже если описание еще не полное.
Рассмотрим следующую схему описания типа, содержащего компоненты всех допустимых областей действия:
Type
<имя типа> = Object [(<имя типа родителя>)]
Private
<частные описания полей и методов>
Protected
<защищенные описания полей и методов>
Public
<общедоступные описания полей и методов>
end;
Поля и методы, описанные в разделе Private, могут быть использованы только внутри модуля, содержащего их описания и нигде более.
Защищенные поля и методы, то есть описанные в разделе Protected, видимы в модуле, где определяется тип, и потомкам данного типа.
Поля и методы из раздела Public не имеют ограничений на использование и могут быть задействованы в любом месте программы, которое имеет доступ к объекту данного типа.
Область действия идентификатора компонента, описанного в части private описания типа, ограничивается модулем (программой), которая содержит описание объектного типа. Другими словами, частные (private) компоненты-идентификаторы действуют, как обычные общедоступные идентификаторы в рамках модуля, который содержит описание объектного типа, а вне модуля любые частные компоненты и идентификаторы неизвестны и недоступны. Поместив в один модуль связанные типы объектов, можно сделать так, что эти объекты смогут обращаться к частным компонентам друг друга, и эти частные компоненты будут неизвестны другим модулям.
Данный текст является ознакомительным фрагментом.