Sobes.tech
Junior — Middle

Lze deklarovat statickou metodu třídy jako finální, aby se zabránilo jejímu přepsání?

sobes.tech AI

Odpověď od AI

V jazyce Java nelze statické metody přepsat v odvozených třídách, protože patří přímo třídě, nikoli instanci. Proto nemá smysl deklarovat statickou metodu jako final a syntakticky to není povoleno.

Klíčové slovo final se obvykle používá pro metody instance, aby se zabránilo jejich přepsání v podtřídách. U statických metod není přepsání možné, ale lze skrýt metodu se stejným názvem v podtřídě (toto se nazývá method hiding).

Příklad:

class Parent {
    static void staticMethod() {
        System.out.println("Statická metoda rodiče");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Statická metoda dítěte");
    }
}

Zde Child skrývá metodu Parent, ale nejedná se o přepsání. Pro statické metody nelze deklarovat final.