Sobes.tech
Junior

O que pode ser alterado ao sobrecarregar métodos na programação?

sobes.tech IA

Resposta da IA

Ao fazer overload de métodos (method overloading), pode-se alterar:

  • Número de parâmetros: Métodos com o mesmo nome podem ter diferentes números de parâmetros formais.
  • Tipos de parâmetros: Métodos com o mesmo nome e o mesmo número de parâmetros podem diferir nos tipos desses parâmetros.
  • Ordem dos tipos de parâmetros: Se os métodos tiverem o mesmo número de parâmetros e os mesmos tipos, mas em ordens diferentes, isso também é considerado overload.

Exemplo em Java:

// Classe com métodos sobrecarregados
class Calculator {

    // Método de soma de dois números inteiros
    public int add(int a, int b) {
        return a + b;
    }

    // Método sobrecarregado: soma de três números inteiros
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Método sobrecarregado: soma de dois números de ponto flutuante
    public double add(double a, double b) {
        return a + b;
    }

    // Método sobrecarregado: soma de um inteiro e um número de ponto flutuante
    public double add(int a, double b) {
        return a + b;
    }

    // Método sobrecarregado: soma de um número de ponto flutuante e um inteiro
    public double add(double a, int b) {
        return a + b;
    }
}

O que não pode ser alterado na sobrecarga de métodos:

  • Tipo de valor de retorno: Dois métodos com o mesmo nome e a mesma assinatura (número, tipos e ordem dos parâmetros) não podem diferir apenas pelo tipo de valor de retorno.
  • Modificadores de acesso: Modificadores de acesso (public, private, protected, default) não afetam a sobrecarga.
  • Presença ou ausência da palavra-chave static: Não é possível sobrecarregar um método estático definindo um método não estático com a mesma assinatura, ou vice-versa.
  • Lista de exceções lançadas pelo método: A lista de exceções não faz parte da assinatura do método, e o compilador não a usa para distinguir métodos sobrecarregados.

Comparação entre sobrecarga e sobrescrita de métodos:

Característica Sobrecarga (Overloading) Sobrescrita (Overriding)
Onde ocorre Em uma mesma classe ou em uma hierarquia de classes Em uma classe filha
Nome do método Igual Igual
Assinatura do método Diferente (número, tipos, ordem de parâmetros) Igual
Tipo de retorno Pode ser diferente (mas não a única diferença) Deve ser igual ou covariante (para objetos)
Propósito Fornecer várias opções para uma mesma ação com diferentes tipos de dados ou quantidade de argumentos Alterar o comportamento de um método herdado na classe filha
Relação entre métodos Métodos independentes Relação de "é um" (herança)
Polimorfismo Polimorfismo na fase de compilação (estático) Polimorfismo na fase de execução (dinâmico)