Руководство разработчика

Ключевое слово РОДИТЕЛЬ


1. Вызов методов родительского объекта.

Используется для вызова методов родительского объектного типа при наличии переопределения наследованных методов. Может использоваться только в теле метода.

Синтаксис:

РОДИТЕЛЬ.<имя метода>

или

РОДИТЕЛЬ(<имя родительского типа>).<имя метода>

Первый вариант определяет вызов метода непосредственного родителя. Второй вариант позволяет вызывать метод более отдаленного родителя ("деда", "прадеда" и т.д.).

Если переопределеного метода нет, то в использовании ключевого слова РОДИТЕЛЬ нет необходимости. Ближайшая реализация метода родительского типа будет вызвана в согласии с принципом полиморфизма. Ключевое слово РОДИТЕЛЬ подавляет полиморфный вызов, когда переопределенный метод есть.

Пример:

ТИП БазовыйДиалог(ДИАЛОГ)
[
  ФУНКЦИЯ СчитатьНастройки(СТРОКА: файл)
    //...
  КОНЕЦ_ФУНКЦИИ
]

ТИП МойДиалог(БазовыйДиалог)
[
  ФУНКЦИЯ СчитатьНастройки(СТРОКА: файл)
    РОДИТЕЛЬ.СчитатьНастройки(файл)
    //...
  КОНЕЦ_ФУНКЦИИ
]

ТИП ЕщеДиалог(МойДиалог)
[
  ФУНКЦИЯ СчитатьНастройки(СТРОКА: файл)
    // не хотим вызывать МойДиалог.СчитатьНастройки
    РОДИТЕЛЬ(БазовыйДиалог).СчитатьНастройки(файл) 
    //...
  КОНЕЦ_ФУНКЦИИ
]

2. Проверка принадлежности иерархии типов.

Выполняет проверку принадлежности иерархии типов для объектных типов и интерфейсов. Используется в выражениях.

Синтаксис:

<имя типа1> РОДИТЕЛЬ <имя типа2>
<имя типа1> НЕ РОДИТЕЛЬ <имя типа2>

ТИП ( <выражение> ) РОДИТЕЛЬ <имя типа>
<имя типа> РОДИТЕЛЬ ТИП ( <выражение> )

ТИП ( <выражение> ) НЕ РОДИТЕЛЬ <имя типа>
<имя типа> НЕ РОДИТЕЛЬ ТИП ( <выражение> )

ТИП ( <выражение1> ) РОДИТЕЛЬ ТИП ( <выражение2> )
ТИП ( <выражение1> ) НЕ РОДИТЕЛЬ ТИП ( <выражение2> ) 

Выражение имеет значение ДА, если тип слева является родителем ("дедом", "прадедом" и т.д. или базовым интерфейсом) типа справа. При указании ключевого слова НЕ выражение имеет значение НЕТ, если тип слева является родителем типа справа. Может указываться имя типа или выражение внутри конструкции ТИП(...).

Пример:

ТИП Фигура []
ТИП Окружность(Фигура) []

ВЫЧИСЛИТЬ
  ПЕРЕМ рез1 = Фигура РОДИТЕЛЬ Окружность // ДА
  
  ПЕРЕМ *: п = Окружность[]
  ПЕРЕМ рез2 = Фигура РОДИТЕЛЬ ТИП(п) // ДА
  
  п = Фигура[]
  ПЕРЕМ рез3 = Фигура РОДИТЕЛЬ ТИП(п) // НЕТ
КОНЕЦ

См. также: