DEFGENERIC вводит обобщённую функцию

(defgeneric draw (port shape)
 (:documentation "Рисует shape в окне port"))

Это лишь объявление, что существует обобщённая функция draw с двумя обязательными параметрами. Реализация же функции обеспечивается наполняющими её методами. Методы не принадлежат классам, а привязаны к функции, которая осуществляет диспетчеризацию, какой метод будет фактически вызываться.

В Си++ требуется указать, является draw методом port или методом shape, и передавать второй объект в качестве первого аргумента. Такая жесткая привязка часто искусственна, приводит к сложностям расширения исходного кода.