В Паскале имеется дополнительный класс методов позднего связывания -динамические методы. Они являются подклассом виртуальных методов и отличаются от них только способом вызова на этапе выполнения.
Объявление динамического метода аналогично виртуальному, за исключением того, что оно должно включать индекс (номер) динамического метода, который указывается сразу за ключевым словом Virtual. Индекс динамического метода должен быть целочисленной константой в диапазоне от 1 до 65535 и представлять собой уникальное значение среди индексов других динамических методов данного объектного типа и его предков. Например:
Function GetSum: Real; Virtual 10; где - 10 - ИНДЕКС.
Переопределение динамического метода аналогично переопределению виртуального. Оно должно включать слово Virtual, за которым следует тот же индекс, что и в переопределяемом динамическом методе предка.
Использование динамических методов целесообразно при создании длинной иерархии объектов с большим количеством виртуальных методов. Если не использовать динамические методы, для них создаются длинные таблицы виртуальных методов с указанием всех виртуальных методов-предков, хотя переопределяться может только часть из них. Это требует большого объема ОП.
При использовании динамических методов создается таблица динамических методов (ТДМ, DMT - Dynamic Method Table), альтернативная таблице виртуальных методов. В ней указываются только те виртуальные методы, которые переопределяются. Это экономит ОП, но требуется время для поиска в DMT объектов-предков. Поэтому производительность DMT ниже, чем VMT, так как доступ к методу через VMT - простое извлечение адреса из таблицы, а доступ к методу через DMT может привести к более длительному поиску.