Multiple Dispatch vs. Funktionsüberladung


14

Ich versuche den Unterschied (falls vorhanden) zwischen den beiden zu verstehen.

Laut der Wikipedia-Seite für Multiple Dispatch ist es gleichbedeutend mit Function Overloading, aber später heißt es dann weiter:

In einer Sprache mit nur einem Versand, wie Java […]

Das scheint ein Widerspruch zu sein, da Java das Überladen von Funktionen unterstützt.

Also was ist es? Unterscheidet sich Multiple Dispatch von Function Overloading oder ist der Artikel falsch in der Behauptung, dass Java Multible Dispatch nicht unterstützt?

Antworten:


16

Mehrfachversand ist nicht (immer) das Gleiche wie Funktionsüberladung, obwohl sie einige Ähnlichkeiten aufweisen. Und Java unterstützt keinen Mehrfachversand.

In statisch typisierten Sprachen, einschließlich Java, besteht der größte Unterschied zwischen dem Versand und dem Überladen darin, dass das Überladen auf dem statischen Parametertyp basiert (dh die Wahl, welche Methode tatsächlich aufgerufen wird, wird zur Kompilierungszeit entschieden), während der Versand auf der Dynamik basiert Typen (dh die Entscheidung wird zur Laufzeit getroffen). (Solche Sprachen unterstützen normalerweise keinen Mehrfachversand.)

Andererseits kann dies eine Frage der Terminologie sein. In dynamisch getippten Sprachen scheinen Versand und Überladung tatsächlich auf dasselbe hinauszulaufen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.