Što je statička metoda?

Objektno orijentirana metoda računalnog programiranja koja je deklarirana u klasi, ali ne ovisi ni o kakvoj posebnoj instanciji te klase naziva se statička metoda. Većina programskih jezika uključuje ključnu riječ static u deklaraciji metode kako bi metoda postala statična. Ove metode pripadaju strogo klasi u kojoj su sadržane, a ne bilo kojem objektu instanciranom iz te klase. Često se nazivaju metodama klase.

Doslovno ime klase obično se koristi za pristup statičkoj metodi umjesto da se na nju odnosi s imenom instanciranog objekta. U Javi je dopušteno koristiti nazive objekata za upućivanje na ove metode, ali se to ne preporučuje. Ako se koristi naziv objekta, osoba koja čita kod može pomiješati jednu od ovih metoda s metodom instance.

Statičke metode se često koriste u uslužnim klasama koje ne ovise o varijablama instance iz bilo koje određene klase. Također se koriste kada programer treba pristupiti metodi, ali nema potrebe za instanciranjem klase u kojoj se nalazi. Uslužne klase se obično ne instanciraju u objekte. Bilo bi neobično da uslužna metoda ima potrebu za izmjenom informacija o objektu. Metoda iz klase java.lang.math, kao što je pow(), bila bi primjer kako bi se ova vrsta metode koristila u uslužnoj klasi.

Metode instance mogu izravno pristupiti varijablama instance, statičkim varijablama, metodama instance i statičkim metodama. Statičke metode ne mogu izravno pristupiti varijablama instance i metodama instance. Zbog prirode metoda instance koje imaju bolji pristup članovima klase od statičkih metoda, metode instance su tip metoda koje se obično koriste u redovnim klasama.

Jedan veliki nedostatak statičkih metoda javlja se tijekom nasljeđivanja kada se koristi polimorfizam. Sve dok roditeljska statička metoda nije proglašena konačnom, ista podređena statička metoda može se kodirati u podređenoj klasi kao da je nadjačana. To se tehnički naziva skrivanjem umjesto nadjačavanjem jer se statička metoda ne može nadjačati.

Kada se koristi skrivanje, ako se roditeljskoj statičkoj metodi pristupa pomoću naziva klase, koristit će se roditeljska metoda. Ako se nadjačanoj podređenoj statičkoj metodi pristupi korištenjem naziva objekta, koristit će se nadjačana podređena metoda. Problem se javlja kada je podređeni objekt postavljen na gore kao roditelj. U ovom slučaju, poziv upcast podređenoj statičkoj metodi koristit će roditeljsku metodu umjesto očekivane podređene metode. S pravim polimorfizmom, dječja metoda bi bila ona koja bi se aktivirala nakon upcast-a.