Sobes.tech
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.