Despacho múltiplo vs. sobrecarga de função

14

Estou tentando entender a diferença (se houver) entre os dois.

De acordo com a página da Wikipedia para Despacho Múltiplo , é sinônimo de Sobrecarga de Função, mas depois continua dizendo:

Em uma linguagem com apenas um único despacho, como Java […]

o que parece uma contradição, já que o Java suporta sobrecarga de funções.

Então qual é? O Multiple Dispatch é diferente da Function Overloading ou o artigo está errado ao afirmar que o Java não suporta o Multible Dispatch?

KaptajnKold
fonte

Respostas:

16

O despacho múltiplo não é (sempre) o mesmo que sobrecarga de função, embora possua algumas semelhanças. E o Java não suporta múltiplos despachos.

Nas linguagens de tipo estaticamente, incluindo Java, a maior diferença entre despacho e sobrecarga é que a sobrecarga é baseada no tipo estático de parâmetros (ou seja, a escolha de qual método é realmente chamado é decidido em tempo de compilação), enquanto o despacho é baseado na dinâmica tipos (ou seja, a decisão é tomada em tempo de execução). (Esses idiomas geralmente não oferecem suporte a vários envios.)

Mas, novamente, isso pode ser uma questão de terminologia. Nas linguagens de tipo dinâmico, o despacho e a sobrecarga parecem se resumir à mesma coisa.

Péter Török
fonte