TURBO PASCAL |
Новости
|
Активизация уточненных методовВ методе, операторе вызова функции или процедуры для обозна- чения активизации конкретного метода допускается использование десигнатора уточненного метода. Такой тип вызова называется акти- визацией уточненного метода. десигнатор уточненного метода │ ┌──────────────────────┐ ┌───┐ ┌────────────────────┐ └─┬>│ идентификатор ├>│ . ├───────>│идентификатор метода├> │ │ объектного типа │ └───┘ ^ └────────────────────┘ │ └──────────────────────┘ │ │ ┌──────────────────────┐ │ └>│ 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; Как показывают эти примеры, активизация уточненных методов позволяет переопределяющему методу "вновь использовать" код мето- да, который он переопределяет. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |