Mis on staatiline meetod?

Objektorienteeritud arvutiprogrammeerimismeetodit, mis on klassis deklareeritud, kuid mis ei sõltu selle klassi ühestki konkreetsest eksemplarist, nimetatakse staatiliseks meetodiks. Enamik programmeerimiskeeli sisaldab meetodi staatiliseks muutmiseks meetodi deklaratsioonis märksõna staatiline. Need meetodid kuuluvad rangelt klassi, milles nad sisalduvad, mitte ühelegi sellest klassist instantseeritud objektile. Neid nimetatakse sageli klassimeetoditeks.

Klassi sõnasõnalist nime kasutatakse tavaliselt staatilisele meetodile juurdepääsuks, selle asemel, et viidata sellele instantseeritud objekti nimega. Java-s on lubatud nendele meetoditele viitamiseks kasutada objektinimesid, kuid see pole tungivalt soovitatav. Kui kasutatakse objekti nime, võib koodi lugev inimene ühe neist meetoditest segi ajada eksemplarimeetodiga.

Staatilisi meetodeid kasutatakse sageli utiliidiklassides, mis ei sõltu ühegi konkreetse klassi eksemplari muutujatest. Neid kasutatakse ka siis, kui programmeerijal on vaja meetodile juurde pääseda, kuid ei ole vaja instantseerida klassi, milles see sisaldub. Utiliidiklasse tavaliselt objektideks ei genereerita. Oleks ebatavaline, et utiliidi meetodil oleks vajadus objekti teavet muuta. Meetod klassist java.lang.math, näiteks pow(), oleks näide selle kohta, kuidas seda tüüpi meetodit utiliidiklassis kasutada.

Eksemplarimeetodid pääsevad otse juurde eksemplari muutujatele, staatilistele muutujatele, eksemplarimeetoditele ja staatilistele meetoditele. Staatilised meetodid ei pääse eksemplari muutujatele ja eksemplari meetoditele otse juurde. Kuna eksemplarimeetoditel on parem juurdepääs klassi liikmetele kui staatilisel meetodil, on eksemplarimeetodid tavaklassides tavaliselt kasutatavad meetodid.

Staatiliste meetodite üks peamisi puudusi esineb pärimise ajal, kui kasutatakse polümorfismi. Kuni staatilist vanemmeetodit ei kuulutata lõplikuks, saab sama alam-staatilist meetodit alamklassis kodeerida nii, nagu see alistataks. Tehniliselt nimetatakse seda alistamise asemel peitmiseks, kuna staatilist meetodit ei saa tühistada.

Peitmise kasutamisel kasutatakse põhimeetodit, kui staatilisele vanemmeetodile pääseb juurde klassi nime kasutades. Kui alistatud alam-staatilisele meetodile pääseb juurde objekti nime kasutades, kasutatakse alistatud alammeetodit. Probleem ilmneb siis, kui alamobjekt on vanemana üles tõstetud. Sel juhul kasutab üleslaaditud alam-staatilise meetodi kutse eeldatava alammeetodi asemel emameetodit. Tõelise polümorfismi korral oleks alammeetod see, mis aktiveeritakse pärast üleslaadimist.