Generische Funktion
# Generische Funktion

Generische Funktionen (nicht zu verwechseln mit Funktionen bei der generischen Programmierung) sind innerhalb der objektorientierten Programmierung ein Konzept bestimmter Programmiersprachen wie Common Lisp, die Multimethoden implementieren. Da sich Multimethoden aufgrund ihrer Natur nicht sinnvoll einer Klasse zuordnen lassen, werden sie stattdessen einer generischen Funktion zugeordnet. Die Gesamtheit der auf diesem Weg einer generischen Funktion zugeordneten Methoden bildet dann ihren Funktionsumfang.

## Generische Funktionen in Common Lisp

### Definition

Generische Funktionen werden mit dem Makro defgeneric definiert. Die formale Parameterliste besteht nur aus den Parametertypen, da keine Parameternamen benötigt werden. Einen eigenen Funktionskörper haben generische Funktionen nicht.

### Verwendung

Die Generischen Funktionen bildet nur den Einstiegspunkt in eine Hierarchie von Methoden. Ihre Definition darf unterbleiben, da sie automatisch erfolgt, sobald eine erste Methode gleichen Namens definiert wird. Sofern allerdings optionale, keyword- oder rest-Parameter vorgesehen sind, kann die genaue Spezifikation der Parameterliste nur über eine explizite Definition der generischen Funktionen erfolgen.

