Kaj je statična metoda?

Objektno usmerjena metoda računalniškega programiranja, ki je deklarirana v razredu, vendar ni odvisna od nobene posebne instanciacije tega razreda, se imenuje statična metoda. Večina programskih jezikov vključuje ključno besedo static v deklaracijo metode, da postane metoda statična. Te metode pripadajo strogo razredu, v katerem so vsebovane, in ne kateremu koli predmetu, ki je instanciran iz tega razreda. Pogosto jih imenujemo razredne metode.

Dobesedno ime razreda se običajno uporablja za dostop do statične metode namesto sklicevanja nanjo z imenom instanciranega predmeta. V Javi je dovoljeno uporabljati imena objektov za sklicevanje na te metode, vendar je to močno odsvetovano. Če se uporabi ime predmeta, lahko oseba, ki bere kodo, eno od teh metod zamenja z metodo primerka.

Statične metode se pogosto uporabljajo v uporabnih razredih, ki niso odvisni od spremenljivk primerka iz katerega koli določenega razreda. Uporabljajo se tudi, ko mora programer dostopati do metode, vendar ni treba instancirati razreda, v katerem je vsebovana. Pomožni razredi običajno niso instancirani v objekte. Nenavadno bi bilo, da bi pomožna metoda imela potrebo po spreminjanju informacij o objektu. Metoda iz razreda java.lang.math, kot je pow(), bi bila primer, kako bi se ta vrsta metode uporabljala v razredu uporabnosti.

Metode primerkov lahko neposredno dostopajo do spremenljivk primerka, statičnih spremenljivk, metod primerkov in statičnih metod. Statične metode ne morejo neposredno dostopati do spremenljivk primerka in metod primerka. Zaradi narave metod primerka, ki imajo boljši dostop do članov razreda kot statične metode, so metode primerkov tip metod, ki se običajno uporabljajo v običajnih razredih.

Ena velika pomanjkljivost statičnih metod se pojavi med dedovanjem, ko se uporablja polimorfizem. Dokler nadrejena statična metoda ni razglašena za končno, se lahko ista podrejena statična metoda kodira v podrejenem razredu, kot da bi jo preglasili. Temu tehnično pravimo skrivanje namesto preglasitev, ker statične metode ni mogoče preglasiti.

Če se uporablja skrivanje, če se do nadrejene statične metode dostopa z imenom razreda, bo uporabljena nadrejena metoda. Če se do preglašene podrejene statične metode dostopa z imenom predmeta, bo uporabljena preglašena podrejena metoda. Težava se pojavi, ko je podrejeni objekt dvignjen kot nadrejeni. V tem primeru bo klic statične metode upcast uporabil nadrejeno metodo namesto pričakovane podrejene metode. S pravim polimorfizmom bi bila otroška metoda tista, ki bi se aktivirala po upcast.