Руководство по языку B.Pascal 7

       

Активизация методов


Метод активизируется посредством оператора вызова процедуры или функции, состоящего из десигнатора метода, за которым следует список параметров. Такой тип вызова называется активизацией мето- да.

десигнатор метода ¦ --------------------- L-T-------------------------------------->¦идентификатор метода+> ¦ ^ L--------------------- ¦ ----------------------- ---- ¦ L>¦ ссылка на переменную +>¦ . +----- L----------------------- L----

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

Экземпляр, обозначенный десигнатором метода, становится не- явным фактическим параметром метода; он соответствует формальному параметру-переменной с именем Self, который владеет объектным ти- пом, соответствующим активизированному методу.

Для статических методов описанный тип (на этапе компиляции) определяет, какой из методов активизируется. Например, десигнато- ры F.Init и FP^.Init всегда активизируют TField.Init, так как описанным типом F и FP^ является TField.

Для виртуальных методов выбором экземпляра управляет факти- ческий тип (этапа выполнения). Например, десигнатор FP^.Display может активизировать методы TField.Display, TStrField.Display, TNumField.Display или TZipField.Display (в зависимости от факти- ческого типа экземпляра, указываемого FP).

В операторе with, ссылающемся на экземпляр объектного типа, ссылка на переменную в десигнаторе метода может опускаться. В этом случае экземпляром, на который ссылается оператор with, ста- новится неявный параметр Self активизации метода. Аналогично, ссылка не переменную может опускаться в методе. В этом случае параметром Self метода, содержащего вызов, становится неявный па- раметр Self активизации метода.



Содержание раздела