Sobes.tech
Junior

¿Qué se puede cambiar al sobrecargar métodos en programación?

sobes.tech AI

Respuesta de la IA

Al sobrecargar métodos (method overloading) se puede cambiar:

  • Cantidad de parámetros: Los métodos con el mismo nombre pueden tener diferentes cantidades de parámetros formales.
  • Tipos de parámetros: Los métodos con el mismo nombre y la misma cantidad de parámetros pueden diferir en los tipos de estos parámetros.
  • Orden de los tipos de parámetros: Si los métodos tienen la misma cantidad de parámetros y los mismos tipos, pero en diferente orden, también se considera sobrecarga.

Ejemplo en Java:

// Clase con métodos sobrecargados
class Calculator {

    // Método de suma de dos números enteros
    public int add(int a, int b) {
        return a + b;
    }

    // Método sobrecargado: suma de tres números enteros
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Método sobrecargado: suma de dos números con punto flotante
    public double add(double a, double b) {
        return a + b;
    }

    // Método sobrecargado: suma de un entero y un número con punto flotante
    public double add(int a, double b) {
        return a + b;
    }

    // Método sobrecargado: suma de un número con punto flotante y un entero
    public double add(double a, int b) {
        return a + b;
    }
}

Lo que no se puede cambiar al sobrecargar métodos:

  • Tipo de valor de retorno: Dos métodos con el mismo nombre y la misma firma (cantidad, tipos y orden de parámetros) no pueden diferir solo en el tipo de valor de retorno.
  • Modificadores de acceso: Los modificadores de acceso (public, private, protected, default) no afectan la sobrecarga.
  • Presencia o ausencia de la palabra clave static: No se puede sobrecargar un método estático definiendo un método no estático con la misma firma, o viceversa.
  • Lista de excepciones lanzadas por el método: La lista de excepciones no forma parte de la firma del método, por lo que el compilador no la usa para distinguir métodos sobrecargados.

Comparación entre sobrecarga y sobrescritura de métodos:

Característica Sobrecarga (Overloading) Sobrescritura (Overriding)
Dónde ocurre En una misma clase o en una jerarquía de clases En una clase hija
Nombre del método Igual Igual
Firma del método Diferente (cantidad, tipos, orden de parámetros) Igual
Tipo de retorno Puede ser diferente (pero no la única diferencia) Debe ser igual o covariante (para objetos)
Propósito Ofrecer varias opciones para una misma acción con diferentes tipos de datos o cantidad de argumentos Cambiar el comportamiento de un método heredado en la clase hija
Relación entre métodos Métodos independientes Relación de "es un" (herencia)
Polimorfismo Polimorfismo en tiempo de compilación (estático) Polimorfismo en tiempo de ejecución (dinámico)