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:
- Está declarado en una clase hija.
- Tiene el mismo nombre que el método en la clase padre.
- Tiene la misma firma (cantidad y tipos de parámetros) y orden de parámetros.
- 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).
- 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).
- 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.