Sobes.tech
Junior — Middle

De que forma os métodos estáticos na programação orientada a objetos diferem dos métodos que são sobrescritos nas classes filhas?

sobes.tech IA

Resposta da IA

Os métodos estáticos em Java pertencem à própria classe, não às instâncias. São chamados pelo nome da classe e não podem ser sobrescritos em classes filhas, pois não participam do polimorfismo.

Ao contrário, os métodos que podem ser sobrescritos (não estáticos) pertencem aos objetos e suportam o polimorfismo dinâmico. Quando um método é chamado através de uma referência à classe base, a implementação real é determinada pelo tipo do objeto em tempo de execução.

Exemplo:

class Parent {
    static void staticMethod() {
        System.out.println("Método estático de Parent");
    }
    void instanceMethod() {
        System.out.println("Método de instância 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 instância 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 instância de Child
    }
}

Aqui, o método estático é chamado pelo tipo de referência (Parent), e o não estático pelo tipo do objeto (Child).