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