Sobes.tech
Junior

¿Cuándo se considera que un método está sobrescrito?

sobes.tech AI

Respuesta de la IA

El método se considera sobrescrito en los siguientes casos:

  1. Está declarado en una clase hija.
  2. Tiene el mismo nombre que el método en la clase padre.
  3. Tiene la misma firma (cantidad y tipos de parámetros) y orden de parámetros.
  4. Tiene un tipo de valor de retorno compatible con el tipo de valor de retorno del método en la clase padre (covarianza, si es aplicable).
  5. Tiene un modificador de acceso igual o más amplio que el método en la clase padre (en la mayoría de los lenguajes orientados a objetos).
  6. El método padre está declarado como virtual, abstracto o de interfaz (en lenguajes que requieren indicar explícitamente la capacidad de sobrescribir, por ejemplo, C# con la palabra clave virtual).

Ejemplo en Java:

// Clase padre
class SuperClass {
    // Método que puede ser sobrescrito
    public void display() {
        System.out.println("Este es el método display de SuperClass.");
    }
}

// Clase hija
class SubClass extends SuperClass {
    // Método sobrescrito display
    @Override // Anotación para verificar la sobrescritura en tiempo de compilación
    public void display() {
        System.out.println("Este es el método display de SubClass.");
    }
}

Ejemplo en Python:

# Clase padre
class SuperClass:
    # Método que puede ser sobrescrito
    def display(self):
        print("Este es el método display de SuperClass.")

# Clase hija
class SubClass(SuperClass):
    # Método sobrescrito display
    def display(self):
        print("Este es el método display de SubClass.")

La clave es mantener el nombre y la firma del método, pero cambiar su comportamiento en la clase hija.

Diferencia importante con la sobrecarga (overloading): la sobrecarga es la declaración de varios métodos con el mismo nombre en una clase, pero con firmas diferentes. La sobrescritura (overriding) es la declaración de un método en una clase hija con el mismo nombre y firma que en la clase padre.