TURBO PASCAL |
Новости
|
Область действия метода и параметр Self
─────────────────────────────────────────────────────────────────
Заметьте, что ни в одном из предыдущих примеров конструкция: with объект do... не встречается в явном виде. Поля данных объек- та легко доступны с помощью методов объекта. Хотя в исходном коде поля данных объекта и тела методов разделены, на самом деле они совместно используют одну и ту же область действия. Именно поэтому один из методов TEmployee может содержать оператор GetTitle := Title без какого-либо квалификатора перед Title. И именно поэтому Title принадлежит тому объекту, который вызывает метод. Если объект вызывает метод, то выполняется неяв- ный оператор with myself do method, связывающий объект и его ме- тоды в области действия. B.Pascal 7 & Objects /UG - 206 - Неявный оператор with выполняется путем передачи невидимого параметра методу всякий раз, когда этот метод вызывается. Этот параметр называется Self и в действительности является 32-разряд- ным указателем на экземпляр объекта, осуществляющего вызов мето- да. Относящийся к TEmployee метод GetRate приблизительно эквива- лентен следующему: function TEmployee.GetRate(var Self: TEmployee): integer; begin GetRate := Self.Rate; end; Примечание: Синтаксически этот пример не совсем кор- ректен. Он приведен только затем, чтобы дать вам более пол- ное представление о специфической связи между объектом и его методом. Но важно ли вам знать о существовании параметра Self? Обычно нет. Генерируемый Borland Pascal код выполняет все это автомати- чески. Однако в некоторых немногочисленных случаях вы можете за- хотеть проникнуть внутрь метода и использовать параметр Self яв- но. Примечание: Явное использование параметра Self допуска- ется, но вы должны избегать ситуаций, в которых это требует- ся. Параметр Self является частью физического кадра стека при всех вызовах методов. Методы, используемые как внешние на языке Ассемблера, должны учитывать Self при получении доступа к пара- метрам метода в стеке. Примечание: Более подробно об использовании методом границ стека рассказывается в Главе 22 "Руководства по язы- ку". |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |