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.