La sobrecarga y la sobreescritura, diferencias

La sobrecarga y la sobreescritura son dos conceptos fundamentales en la programación orientada a objetos que a menudo se confunden. Aunque están relacionadas con la definición de métodos, tienen características y propósitos distintos.

Sobrecarga (Overloading)

  • Definición: Ocurre cuando se declaran múltiples métodos con el mismo nombre dentro de una misma clase, pero con diferentes listas de parámetros (tipo de datos, número de parámetros o orden).
  • Propósito: Permite definir múltiples versiones de un mismo método para realizar tareas similares con diferentes entradas.
  • Resolución: La versión del método a ejecutar se determina en tiempo de compilación basándose en los argumentos proporcionados al llamar al método.
  • Ejemplo:
Java
public class Calculadora {
    public int sumar(int a, int b) {
        return a + b;
    }

    public double sumar(double a, double b) {
        return a + b;
    }
}

En este ejemplo, tenemos dos métodos sumar con diferentes tipos de parámetros. El compilador elegirá la versión correcta según los argumentos que se le pasen.

Sobreescritura (Overriding)

  • Definición: Ocurre cuando una clase derivada reimplementa un método que ya existe en su clase base. El nuevo método tiene el mismo nombre, los mismos parámetros y el mismo tipo de retorno.
  • Propósito: Permite modificar el comportamiento de un método heredado para adaptarlo a las necesidades específicas de la clase derivada.
  • Resolución: La versión del método a ejecutar se determina en tiempo de ejecución basándose en el tipo del objeto que se está utilizando.
  • Ejemplo:
Java
class Animal {
    public void hacerSonido() {
        System.out.println("El animal hace un sonido.");
    }
}

class Perro extends Animal {
    @Override
    public void hacerSonido() {
        System.out.println("El perro    ladra.");
    }
}

En este ejemplo, la clase Perro sobreescribe el método hacerSonido() de la clase base Animal. Cuando se crea un objeto de tipo Perro y se llama al método hacerSonido(), se ejecutará la versión sobreescrita.

Resumen de las diferencias:

CaracterísticaSobrecargaSobreescritura
**Múltiples métodosUn solo método
**Misma claseDiferentes clases (relación herencia)
**Diferentes parámetrosMismo nombre, parámetros y tipo de retorno
**ResoluciónTiempo de compilaciónTiempo de ejecución
**PropósitoProporcionar múltiples versiones de un métodoModificar el comportamiento de un método heredado

En resumen:

  • La sobrecarga se utiliza para crear métodos con la misma funcionalidad pero con diferentes parámetros.
  • La sobreescritura se utiliza para personalizar el comportamiento de métodos heredados.


Comentarios

Entradas más populares de este blog

Tratamiento de excepciones

Agregación

Composición