Sobes.tech
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).