Nas linguagens mais antigas, cada função é chamada através de seu identificador (nome). Dentro do contexto onde ela é válida o identificador da função precisa ser único para que não haja ambiguidades no momento da chamada.

Já nas linguagens mais modernas, existe o conceito de assinatura de funções, ou no caso de linguagens orientadas a objeto, assinatura de métodos. Nesse caso, não é apenas o nome que identifica um método, o que torna um método único é sua assinatura. A assinatura do método é formada pelo seu nome e pelo tipo, quantidade e ordem de seus parâmetros. Desta forma, é possível existirem na mesma classe, métodos com o mesmo nome, desde que tenham listas de parâmetros diferentes. Note que o nome dos parâmetros não faz parte da assinatura, apenas o tipo, quantidade e ordem deles. Também não faz parte da assinatura o tipo de retorno do método.

Exemplo:

Declaração: public void facaAlgo(String st)
Assinatura: facaAlgo(String)

Declaração: public void facaAlgo (int Valor, String st)
Assinatura: facaAlgo(int, String)

Links recomendados: