Области видимости элементов классов Delphi

Для контроля доступа к полям, методам и свойствам классов используются области видимости. В Delphi есть следующие области видимости:

  • public
  • published
  • strict private
  • private
  • strict protected
  • protected

Рассмотрим их на примерах.

public

Элементы секции public не имеют ограничений доступа. Они доступны отовсюду: из методов своего класса, из методов других классов, из своего модуля и из других модулей.

published

Видимость элементов в секции published полностью аналогична секции public. В этом посте рассматривается только поведение касающееся видимости, подробнее в различиях связанных с RTTI описано в документации.

Область по умолчанию

Если не указывать область видимости то она будет аналогичной области public.

Аналогично поле видно и из других модулей.

strict private

Самая ограниченная область видимости. Элементы в секции private доступны только из методов класса. К ним нет доступа из методов других объектов, независимо от модуля в котором они находятся. Также к ним нет доступа из наследников данного объекта.

private

Секция private совпадает с секцией strict private, за исключением того что все элементы этой секции доступны из любого метода любого класса в том же модуле в котором объявлен класс.

Если перенести процедуру CheckCircle в другой модуль то произойдёт ошибка компиляции, так как FRadius уже будет недоступен.

strict protected

Элементы объявленные с секции strict protected доступны только из методов самого класса и из классов потомков. От модуля в котором они находятся это не зависит.

protected

Секция protected совпадает с секцией strict protected, за исключением того что все элементы этой секции доступны из любого метода в том же модуле в котором объявлен класс. Ситуация аналогичная private и strict private.

Ссылки

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *