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.