Sobes.tech
Junior

O que deve distinguir dois métodos para que possamos considerá-los sobrecarregados?

sobes.tech IA

Resposta da IA

Para que dois métodos sejam considerados sobrecarregados, eles devem atender às seguintes condições:

  • Nome do método igual. O nome dos métodos deve ser idêntico.
  • Assinatura do método diferente. A assinatura do método inclui o nome do método e a lista de tipos de parâmetros (sua quantidade, ordem e tipos). O tipo de retorno do método não faz parte da assinatura e não afeta a sobrecarga.

Exemplos:

class Example {
    void print(int num) { // Assinatura: print(int)
        System.out.println(num);
    }

    void print(String text) { // Assinatura: print(String)
        System.out.println(text);
    }

    void print(int num, String text) { // Assinatura: print(int, String)
        System.out.println(num + " " + text);
    }

    // Isto não é sobrecarga, pois a assinatura print(int) se repete
    // int print(int num) {
    //     return num;
    // }
}

Tabela ilustrando exemplos de sobrecarga:

Nome do método Tipos de parâmetros Métodos iguais / diferentes É sobrecarga? Razão
calc (int, int) Diferentes Sim Assinatura diferente (quantidade e tipos de parâmetros)
calc (double, double) Diferentes Sim Assinatura diferente (tipos de parâmetros)
calc (int, int, int) Diferentes Sim Assinatura diferente (quantidade de parâmetros)
calc () Diferentes Sim Assinatura diferente (quantidade de parâmetros)
calc (int, int) Iguais Não Mesma assinatura
calculate (int, int) Diferentes Não Nome do método diferente