Junior — Middle
Czy można zadeklarować statyczną metodę klasy jako finalną, aby zapobiec jej nadpisaniu?
sobes.tech AI
Odpowiedź od AI
W Javie metody statyczne nie mogą być nadpisywane w klasach dziedziczących, ponieważ należą do samej klasy, a nie do instancji. Dlatego deklarowanie metody statycznej jako final nie ma sensu i jest syntaktycznie niedozwolone.
Słowo kluczowe final jest zwykle używane dla metod instancji, aby uniemożliwić ich nadpisanie w podklasach. Dla metod statycznych nadpisanie jest niemożliwe, ale można ukryć metodę o tej samej nazwie w podklasie (to nazywa się ukrywaniem metody).
Przykład:
class Parent {
static void staticMethod() {
System.out.println("Metoda statyczna Parent");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Metoda statyczna Child");
}
}
Tutaj Child ukrywa metodę Parent, ale nie ją nadpisuje. Nie można deklarować final dla metody static.