Sobrecarga de métodos (method overloading): declarando métodos com o mesmo nome

Sobrecarga de métodos (method overloading) em Java
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

O termo sobrecarga vem do fato de declararmos vários métodos com o mesmo nome, estamos carregando o aplicativo com o 'mesmo' método.
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:

Antonio (Itu-SP) disse...

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; ?
}

Tutoriais de Java

Como Ganhar na Lotofácil