Junior — Middle
¿En qué se diferencian los métodos estáticos en la programación orientada a objetos de los métodos que se sobrescriben en las clases hijas?
sobes.tech AI
Respuesta de la IA
Los métodos estáticos en Java pertenecen a la clase misma, no a las instancias. Se llaman mediante el nombre de la clase y no pueden ser sobrescritos en clases hijas, ya que no participan en el polimorfismo.
En contraste, los métodos que se pueden sobrescribir (no estáticos) pertenecen a los objetos y soportan el polimorfismo dinámico. Al llamar a un método a través de una referencia a la clase base, la implementación real se determina por el tipo del objeto en tiempo de ejecución.
Ejemplo:
class Parent {
static void staticMethod() {
System.out.println("Método estático de Parent");
}
void instanceMethod() {
System.out.println("Método de instancia de Parent");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Método estático de Child");
}
@Override
void instanceMethod() {
System.out.println("Método de instancia de Child");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Imprime: Método estático de Parent
p.instanceMethod(); // Imprime: Método de instancia de Child
}
}
Aquí, el método estático se llama por el tipo de referencia (Parent), y el no estático por el tipo del objeto (Child).