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ística | Sobrecarga | Sobreescritura |
|---|---|---|
| **Múltiples métodos | Un solo método | |
| **Misma clase | Diferentes clases (relación herencia) | |
| **Diferentes parámetros | Mismo nombre, parámetros y tipo de retorno | |
| **Resolución | Tiempo de compilación | Tiempo de ejecución |
| **Propósito | Proporcionar múltiples versiones de un método | Modificar 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
Publicar un comentario