(next-methodp)
Если функция next-methodp дала положительный результат, то обнаруженный скрытый метод родовой функции можно вызвать при помощи функции call-next-method. Скрытому методу передается тот же набор аргументов, что и вызывающему его методу родовой функции. Метод может продолжать свою работу и после вызова функции call-next-method. Кроме того, возможен множественный вызов скрытых методов родовой функции. Для этого нужно использовать функцию call-next-method необходимое число раз. Результатом работы данной функции служит результат вызванного скрытого метода или значение FALSE в случае ошибки (см. рис. 15.23).
Пример 15.26. Использование функции call-next-method
(defmethod describe ((?a INTEGER))
(if (next-methodp) then
(bind?extension (str-cat " " (call-next-method)))
else
(bind?extension ""))
(str-cat "INTEGER"?extension))
(describe 3)
(defmethod describe ((?a NUMBER)) "NUMBER")
(describe 3)
(describe 3.0)
Функция call-next-handler подобна функции call-next-method и предназначена для вызова скрытых обработчиков сообщений объектов, определенных пользователем классов. Определение функции call-next-handler приведено ниже.