Читайте также:
|
|
Методы объекта могут быть описаны как статические (static), виртуальные (virtual), динамические (dinamic) или как методы обработки сообщения (message-handling), для чего к ним добавляются соответствующие директивы.
§ Статические методы. Статические методы работают подобно обычным процедурам или функциям. Этот тип методов устанавливается по умолчанию. Адрес такого метода известен уже на стадии компиляции, и компилятор в коде программы оформляет все вызовы данного метода как статические. Такие методы работают быстрее других, однако не могут быть перегружены в целях полиморфизма объектов.
§ Виртуальные методы. Вызов виртуальных методов из-за возможности их перегрузки немного сложнее, чем вызов статических, так как во время компиляции адрес конкретного вызываемого метода не известен. Для решения этой задачи компилятор строит таблицу виртуальных методов (VMT – Virtual Method Table), обеспечивающую определение адреса метода в процессе выполнения программы. VMT содержит все виртуальные методы предка и виртуальные методы самого объекта, поэтому виртуальные методы используют несколько больший объем памяти, чем методы динамические, однако их вызов происходит быстрее.
§ Динамические методы. Динамические методы в целом подобны виртуальным методам, но обслуживаются другой диспетчерской системой. Каждому динамическому методу компилятор назначает уникальное число и использует его вместе с адресом метода для построения таблицы динамических методов (DMT– Dynamic Method Table). В отличие от VMT, DMT содержит методы лишь данного объекта, благодаря чему обеспечивается экономия используемой памяти, но замедляется вызов метода, поскольку для поиска его адреса, скорее всего, будет пересмотрена не одна DMT в иерархии объектов.
§ Методы обработки сообщения. Методы обработки сообщений предназначены для обработки приходящих сообщений, с помощью которых происходит обмен информацией в операционной системе Windows. Значение после ключевого слова message определяет сообщение, в ответ на которое вызывается данный метод. Такие методы создаются для реакции на те или иные сообщения Windows. Они никогда не вызываются непосредственно из программы.
Например:
type
TTextBox = class(TCustomControl)
private
procedure WMCharfvar Message: TWMChar); message WM_CHAR;
end;
где WM_CHAR – константа, определяющая данное сообщение. Две буквы WM (Windows Message) говорят о том, что это сообщение операционной системы Windows. В данном случае это связано с нажатием клавиш клавиатуры.
Дата добавления: 2015-07-25; просмотров: 48 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Области видимости | | | Переопределение методов |