Sobes.tech
Junior

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

sobes.tech AI

Respuesta de la IA

La sobrescritura de métodos ocurre en herencia, cuando una clase hija proporciona su propia implementación de un método que ya está definido en la clase padre. La firma del método (nombre, tipo de retorno y cantidad/tipos de argumentos) debe coincidir con la del método en la clase padre. Esto permite que el polimorfismo funcione: un objeto de la clase hija, utilizado como un objeto de la clase padre, llama a su implementación específica del método.

Ejemplos de uso:

  • Cambio en la lógica del comportamiento heredado.
  • Proporcionar una implementación específica de la subclase para una interfaz común.

Puntos clave:

  • Se requiere una relación es-un (herencia).
  • La firma del método debe coincidir.
  • El modificador de acceso puede ser igual o menos restrictivo que en el método de la clase padre.
  • No se pueden sobrescribir métodos final o static (en la mayoría de los lenguajes).
// Ejemplo en Java
class Animal {
    public void makeSound() {
        System.out.println("Sonido genérico de animal");
    }
}

class Dog extends Animal {
    @Override // La anotación indica que se está sobrescribiendo
    public void makeSound() {
        System.out.println("¡Guau!");
    }
}

// Uso
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Salida: Sonido genérico de animal
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Salida: ¡Guau! (se llama al método sobrescrito)
# Ejemplo en Python
class Animal:
    def make_sound(self):
        print("Sonido genérico de animal")

class Dog(Animal):
    def make_sound(self): # Sobrescritura del método
        print("¡Guau!")

# Uso
# animal = Animal()
# animal.make_sound() # Salida: Sonido genérico de animal
#
# dog = Dog()
# dog.make_sound() # Salida: ¡Guau!