TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Активизация уточненных методов 

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

         десигнатор уточненного метода
         │   ┌──────────────────────┐ ┌───┐        ┌────────────────────┐
         └─┬>│    идентификатор     ├>│ . ├───────>│идентификатор метода├>
           │ │   объектного типа    │ └───┘    ^   └────────────────────┘
           │ └──────────────────────┘          │
           │ ┌──────────────────────┐          │
           └>│      inherited       ├──────────┘
             └──────────────────────┘

             Объектный тип,  заданный  в  десигнаторе уточненного метода,
        должен быть таким же,  как и включающий метод объектный тип,  или
        соответствовать родительскому типу.

             Для обозначения родительского объектного типа или объектного
        типа, включающего   метод,   можно  использовать  ключевое  слово
        inherited;  в методах объектного типа, не имеющего предка, ключе-
        вое слово inherited использоваться не может.

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

             Активизация уточненного метода используется обычно в переоп-
        ределяющем методе  для  активизации  переопределяющего метода.  С
        учетом описанных выше типов приведем некоторые примеры  активиза-
        ции уточненных методов:

             constructor TNumField.Init(Fx, FY, Flen: Integer;
               FName: String; FMin, FMax: Longint);
             begin
               inherited Init(FX, FY, FLen, FName);
               Value := 0;
               Min := FMin;
               Max := FMax;
             end;

             function TZipField.PutStr(S: String): Boolean;
             begin
               PutStr := (Length(S) = 5) and TNumField.PutStr(S);
             end;

             Как показывают  эти примеры,  активизация уточненных методов
        позволяет переопределяющему методу "вновь использовать" код мето-
        да, который он переопределяет.

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz