Sobes.tech
Junior — Middle

È possibile dichiarare un metodo statico di classe come finale per impedirne l'override?

sobes.tech AI

Risposta dell'AI

In Java, i metodi statici non possono essere sovrascritti nelle classi derivate perché appartengono alla classe stessa, non all'istanza. Pertanto, dichiarare un metodo statico come final non ha senso e non è consentito sintatticamente.

La parola chiave final viene solitamente usata per i metodi di istanza per impedirne la sovrascrittura nelle sottoclassi. Per i metodi statici, la sovrascrittura non è possibile, ma è possibile nascondere un metodo con lo stesso nome nella sottoclasse (questo è chiamato method hiding).

Esempio:

class Parent {
    static void staticMethod() {
        System.out.println("Metodo statico di Parent");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Metodo statico di Child");
    }
}

Qui, Child nasconde il metodo di Parent, ma non lo sovrascrive. Non è possibile dichiarare final per un metodo statico.