Sobes.tech
Junior — Middle

Je možné vyhlásiť statickú metódu triedy ako finálnu, aby sa zabránilo jej prepísaniu?

sobes.tech AI

Odpoveď od AI

V Jave, statické metódy nemôžu byť prepísané v podtriedach, pretože patria samotnej triede, nie inštancii. Preto deklarovanie statickej metódy ako final nemá zmysel a syntakticky to nie je povolené.

Kľúčové slovo final sa zvyčajne používa pre metódy inštancie, aby sa zabránilo ich prepísaniu v podtriedach. Pre statické metódy nie je možné ich prepísať, ale je možné skryť metódu s rovnakým názvom v podtriede (toto sa nazýva method hiding).

Príklad:

class Parent {
    static void staticMethod() {
        System.out.println("Statická metóda rodiča");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Statická metóda dieťaťa");
    }
}

Tu Child skrýva metódu Parent, ale nejde o prepísanie. Pre static metódy nie je možné deklarovať final.