Como Sobrecarga Métodos em Java
Uma classe Java pode conter dois ou mais métodos com o mesmo nome, desde que esses métodos aceitar diferentes parâmetros. Esta técnica, denominada sobrecarga, é uma das chaves para a construção de flexibilidade em suas classes. Com sobrecarga, você pode antecipar diferentes maneiras que alguém pode querer invocar funções de um objeto e, em seguida, fornecer métodos sobrecarregados para cada alternativa.
O termo sobrecarregando é preciso, mas um pouco infeliz. Normalmente, quando você diz que algo está sobrecarregado, há um problema. Felizmente, você não precisa se preocupar com Java entrar em colapso sob o peso de métodos sobrecarregados.
Você já está familiarizado com várias classes que têm sobrecarregado métodos, embora você não pode realizá-lo. A classe PrintWriter, por exemplo (que você acessa via System.out), define 10 versões do método println que permitem imprimir diferentes tipos de dados. As seguintes linhas mostram o método declaração para cada uma dessas sobrecargas:
println void () vazio println (boolean x) println nula (char x) println void (char [] x) println void (double x) println void (float x) println void (int x) vazio println (long x) println vazio (Object x) println nula (string x)
A regra básica na criação de métodos sobrecarregados é que cada método deve ter uma assinatura única. Um método de assinatura é a combinação de seu nome, o número e tipos de parâmetros que aceita. Assim, cada um dos métodos println tem uma assinatura diferente, porque, apesar de todos os métodos têm o mesmo nome, cada método aceita um tipo de parâmetro diferente.
Duas coisas que são não uma parte da assinatura de um método são
tipo de retorno do método: Você não pode codificar dois métodos com o mesmo nome e parâmetros, mas com diferentes tipos de retorno.
Os nomes dos parâmetros: Tudo o que importa para a assinatura do método são os tipos dos parâmetros e a ordem em que eles aparecem. Assim, os dois métodos a seguir têm a mesma assinatura:
someMethodOfMine dupla (double x, y boolean) double someMethodOfMine (double param1, param2 boolean)