Sobes.tech
Junior

¿Cuándo ocurre la sobrescritura de un método (overriding)?

sobes.tech AI

Respuesta de la IA

La sobrescritura de métodos (overriding) ocurre en la jerarquía de herencia cuando una clase hija proporciona su propia implementación de un método que ya está definido en la clase padre con el mismo nombre, firma (coincidencia en tipo y cantidad de parámetros) y tipo de retorno (o covariante en el caso del tipo de objeto de retorno).

Características clave:

  • Herencia: La sobrescritura solo es posible en el contexto de herencia (clases padre e hijo).
  • Firma: El método en la clase hija debe tener la misma firma (nombre, cantidad y tipos de parámetros) y tipo de retorno (o su subtipo covariante) que el método en la clase padre.
  • Accesibilidad: El método que se sobrescribe debe ser accesible para la clase hija (generalmente public, protected).
  • Polimorfismo: La sobrescritura es la base del polimorfismo en tiempo de ejecución, permitiendo que los objetos de la clase hija respondan a la llamada del método de manera propia, incluso si se accede a ellos mediante una referencia a la clase padre.

Ejemplo (Java):

// Clase padre
class Animal {
    // Método que será sobrescrito
    public void makeSound() {
        System.out.println("Animal hace un sonido");
    }
}

// Clase hija
class Dog extends Animal {
    // Sobrescritura del método makeSound()
    @Override // La anotación @Override es opcional, pero recomendable
    public void makeSound() {
        System.out.println("Perro ladra");
    }
}

Ejemplo de uso:

// Crear un objeto Dog
Animal myDog = new Dog();
// Llamar al método. Se llamará a la versión sobrescrita en Dog
myDog.makeSound(); // Salida: Perro ladra

// Crear un objeto Animal
Animal someAnimal = new Animal();
// Llamar al método. Se llamará a la versión en Animal
someAnimal.makeSound(); // Salida: Animal hace un sonido