Middle
É possível sobrescrever métodos estáticos em Java?
sobes.tech IA
Resposta da IA
Não, não é possível sobrescrever métodos estáticos em Java. Os métodos estáticos pertencem à classe, não a uma instância específica do objeto. Quando um método estático com a mesma assinatura do método estático da superclasse é herdado, isso não é uma sobrescrita; é chamado escondimento (method hiding). A chamada de um método estático é sempre determinada pelo tipo de referência, não pelo tipo do objeto.
class Parent {
public static void staticMethod() {
System.out.println("Método estático em Parent");
}
}
class Child extends Parent {
// Isto não é uma sobrescrita, mas um escondimento
public static void staticMethod() {
System.out.println("Método estático em Child");
}
}
public class Main {
public static void main(String[] args) {
Parent.staticMethod(); // Chama o método estático de Parent
Child.staticMethod(); // Chama o método estático de Child
Parent p = new Child();
// Chama o método estático de Parent, porque o tipo de referência é Parent
p.staticMethod();
}
}
Neste exemplo, embora a variável p faça referência a um objeto Child, a chamada a p.staticMethod() invoca o método estático da classe Parent. Isto demonstra que os métodos estáticos não participam no polimorfismo de execução, que é característico da sobrescrita.