Métodos sobrecarregados são métodos na mesma classe que compartilham o mesmo nome mas aceitam diferentes tipos de variáveis como argumentos. Por exemplo, uma classe pode conter dois métodos "adicionar" diferentes: um que aceita dois valores double, "adicionar(double a, double b)", e outro que aceita dois valores inteiros, "adicionar(int a, int b)". O computador decide automaticamente qual método chamar em tempo de execução com base nos tipos de variáveis passados ao método.
Métodos sobrecarregados dão aos programadores a flexibilidade de chamar um método semelhante para diferentes tipos de dados. Se você está trabalhando em um programa de matemática, por exemplo, poderia usar sobrecarga para criar várias classes "multiplicar", cada uma multiplicando um número ou tipo diferente de argumento: o mais simples "multiplicar(int a, int b)" multiplica dois inteiros; o mais complexo "multiplicar(double a, int b, int c)" multiplica um double por dois inteiros — você poderia então chamar "multiplicar" em qualquer combinação de variáveis para a qual criou um método sobrecarregado e receber o resultado adequado.
A sobrecarga também é usada em construtores para criar novos objetos com diferentes quantidades de dados. Por exemplo, você poderia usar sobrecarga para criar três construtores diferentes para um objeto "Casa" com número da casa, nome da rua e variáveis de cor. O construtor mais simples "Casa()" não aceita argumentos e cria uma casa com variáveis padrão ou vazias. Um construtor mais complexo, "Casa(int numeroCasa, String nomeRua)", cria uma casa com o número e nome da rua especificados, mas cor padrão ou vazia. O construtor mais complexo, "Casa(int numeroCasa, String nomeRua, String cor)", cria uma casa com todas as informações especificadas, deixando nada como padrão. Você poderia então criar um objeto casa baseado nas informações atualmente disponíveis, com as informações indisponíveis deixadas em branco ou no padrão.
Métodos sobrecarregados devem usar diferentes números ou tipos de argumentos para evitar ambiguidade. Se você criar dois métodos na mesma classe com o mesmo nome e que aceitem dois inteiros como argumentos, o compilador Java não conseguirá distinguir entre os dois, mesmo se as variáveis de entrada tiverem nomes diferentes. Por exemplo, o método "adicionar(int a, int b)" não pode existir na mesma classe que o método "adicionar(int c, int d)".
Você deve definir um tipo de retorno para cada método sobrecarregado. Métodos podem ter diferentes tipos de retorno — por exemplo, "adicionar(int a, int b)" pode retornar um inteiro, enquanto "adicionar(double a, double b)" retorna um double. No entanto, Java não consegue distinguir entre dois métodos diferentes baseados no tipo de retorno. Portanto, "int multiplicar(double a, double b)" não pode existir na mesma classe que "double multiplicar(double a, double b)".
Tecnologia Eletrônica © [www.351231.com]