Middle
¿Se pueden sobrescribir los métodos estáticos en Java?
sobes.tech AI
Respuesta de la IA
No, no se pueden sobrescribir métodos estáticos en Java. Los métodos estáticos pertenecen a la clase, no a una instancia específica del objeto. Cuando se hereda un método estático con la misma firma que el método estático de la superclase, esto no se considera una sobrescritura; se llama ocultamiento (method hiding). La llamada a un método estático siempre se determina por el tipo de referencia, no por el tipo del objeto.
class Parent {
public static void staticMethod() {
System.out.println("Método estático en Parent");
}
}
class Child extends Parent {
// Esto no es una sobrescritura, sino un ocultamiento
public static void staticMethod() {
System.out.println("Método estático en Child");
}
}
public class Main {
public static void main(String[] args) {
Parent.staticMethod(); // Se llama al método estático de Parent
Child.staticMethod(); // Se llama al método estático de Child
Parent p = new Child();
// Se llama al método estático de Parent, porque el tipo de referencia es Parent
p.staticMethod();
}
}
En este ejemplo, aunque la variable p hace referencia a un objeto Child, la llamada a p.staticMethod() invoca el método estático de la clase Parent. Esto demuestra que los métodos estáticos no participan en el polimorfismo de ejecución, que es característico de la sobrescritura.