Sobes.tech
Junior — Middle

Kas on võimalik klassi staatiline meetod määratleda lõplikult, et vältida selle ülekirjutamist?

sobes.tech AI

Vastus AI-lt

Java keeles, staatilisi meetodeid ei saa pärandatud klassides üle kirjutada, kuna need kuuluvad klassile ise, mitte eksemplarile. Seetõttu ei ole mõtet määratleda staatilist meetodit finalina ning see ei ole süntaktiliselt lubatud.

Final märksõna kasutatakse tavaliselt näidismetoodide jaoks, et takistada nende üle kirjutamist alamklassides. Staatiliste meetodite puhul üle kirjutamine ei ole võimalik, kuid saab varjata sama nimega meetodi alamklassides (seda nimetatakse method hiding'uks).

Näide:

class Parent {
    static void staticMethod() {
        System.out.println("Parenti staatiline meetod");
    }
}

class Child extends Parent {
    static void staticMethod() {
        System.out.println("Lapse staatiline meetod");
    }
}

Siin varjab Child Parenti meetodi, kuid see ei ole üle kirjutamine. Staatiliste meetodite puhul ei ole lubatud määratleda final.