- Multimethode
-
Als Multimethoden bezeichnet man Methoden einer objektorientierten Programmiersprache, deren Auswahl nicht nur anhand des Typs eines Objekts getroffen wird, sondern anhand der dynamischen Typen mehrerer Objekte. Diese Art der Methodenauswahl wird auch als multiple dispatch (mehrfache Verteilung) bezeichnet.
Zu unterscheiden ist die mehrfache Verteilung von der in vielen strukturierten Programmiersprachen möglichen Überladung, bei der Methoden polymorph bezüglich der statischen Typen ihrer Parameter sind.
Während bei klassischen OO-Sprachen wie Java ausschließlich der dynamische Typ des impliziten ersten Parameters
this
herangezogen wird, können in Sprachen mit multiple dispatch Methoden auch auf die dynamischen Typen aller ihrer Parameter spezialisiert werden. Die von vielen (insbesondere C-ähnlichen) kompilierten Sprachen angebotene Überladung entspricht einem multiple dispatch zur Übersetzungs-Zeit. Interessanterweise bieten die meisten Script-Sprachen Multimethoden in Form von Überladung jedoch zu Gunsten dynamischer Typisierung nicht an. (auch wenn dynamische Typisierung Multimethoden nicht ausschließt)Die bekannteste OO-Umgebung, die diese Fähigkeit hat, ist CLOS (Common Lisp Object System), aber auch Sprachen wie Dylan, Slate, Cecil, Guile oder der Java-Abkömmling Nice bieten Derartiges. In C++ ist es möglich Multimethoden als Funktoren und Templates auf verschiedene Weisen zu implementieren.
Wikimedia Foundation.