Em nosso artigo sobre parâmetros e argumentos em Java, mostramos um exemplo sobre um método que recebe um número e retorna o quadrado desse número.
Porém esse método tem uma limitação: ele só recebia inteiros.
E se você quiser criar métodos com float? double?
Faça uma sobrecarga.
Overloading ou sobrecarga em Java
A única diferença entre esses métodos são seus parâmetros e/ou tipo de retorno.
Por exemplo, vamos declarar, num mesmo aplicativo, dois métodos quadrados: um que recebe e retorna inteiros e outro que recebe e retorna double.
public static int quadrado(int num){ int quadrado; quadrado = num * num; return quadrado; } public static double quadrado(double num){ double quadrado; quadrado = num * num; return quadrado; }
Quando declaramos estes dois métodos, estamos fazendo umas sobrecarga de métodos, ou method overloading em Java.
O que acontece, então, quando fazemos o chamado da função? Já que existem duas.
Embora os nomes sejam os mesmos, elas atuam de forma diferentes e ocupam espaços diferentes em memória, pois estão lidando com tipos diferentes de variáveis.
Quando invocamos o método com um inteiro como um argumento, o Java é inteligente o suficiente para invocar corretamente o método que foi declarado com inteiro como parâmetro.
Caso invoquemos o método usando um double como um argumento, o method a ser executado será aquele que foi declarado com o tipo double em seu parâmetro.
Veja:
public class Sobrecarga {
public static int quadrado(int num){
int quadrado;
quadrado = num * num;
return quadrado;
}
public static double quadrado(double num){
double quadrado;
quadrado = num * num;
return quadrado;
}
public static void main(String[] args){
System.out.println("Inteiro 2 ao quadrado: " + quadrado(2));
System.out.println("Double PI ao quadrado: " + quadrado( Math.PI ));
}
}
Um comentário:
Oi amigo,
Parabéns pelo site e principalmente pelo conteúdo / curso de java.
no segundo exemplo, o return está correto ?
public static double quadrado(double num){
double quadrado;
quadrado = num * num;
return double; ---> não seria: return quadrado; ?
}
Postar um comentário