Mikä on staattinen menetelmä?

Objektisuuntautunutta ohjelmointimenetelmää, joka ilmoitetaan luokassa, mutta ei ole riippuvainen mistään kyseisen luokan ilmentymästä, kutsutaan staattiseksi menetelmäksi. Useimmat ohjelmointikielet sisältävät avainsanan staattinen menetelmän ilmoituksessa, jotta menetelmästä tulee staattinen. Nämä menetelmät kuuluvat tiukasti siihen luokkaan, johon ne sisältyvät, eivät mihinkään luokasta syntyvään objektiin. Niitä kutsutaan usein luokkamenetelmiksi.

Luokan kirjaimellista nimeä käytetään tavallisesti staattisen menetelmän käyttämiseen sen sijaan, että viitataisiin siihen luotavan objektin nimellä. Javassa on sallittua käyttää objektimenimiä viittaamaan näihin menetelmiin, mutta sitä ei suositella. Jos käytetään objektin nimeä, koodin lukija voi sekoittaa yhden näistä menetelmistä ilmentymmetodin kanssa.

Staattisia menetelmiä käytetään usein hyödyllisyysluokissa, jotka eivät ole riippuvaisia ​​tietyn luokan esiintymämuuttujista. Niitä käytetään myös silloin, kun ohjelmoijan on päästävä käyttämään menetelmää, mutta sen luokkaa, johon se sisältyy, ei tarvitse perustaa. Apuohjelmaluokkia ei tavallisesti välitetä objekteiksi. Olisi epätavallista, että hyödyllisyysmenetelmällä olisi tarve muuttaa objektitietoja. Java.lang.math -luokan menetelmä, kuten pow (), olisi esimerkki siitä, miten tämäntyyppistä menetelmää käytettäisiin hyödyllisyysluokassa.

Ilmentymän menetelmät voivat käyttää suoraan instanssimuuttujia, staattisia muuttujia, instanssimenetelmiä ja staattisia menetelmiä. Staattiset menetelmät eivät voi suoraan käyttää instanssin muuttujia ja instanssimenetelmiä. Koska instanssimenetelmillä on parempi pääsy luokan jäseniin kuin staattisilla menetelmillä, esiintymämenetelmät ovat sellaisia ​​menetelmiä, joita tavallisesti käytetään tavallisissa luokissa.

Yksi staattisten menetelmien suuri haitta ilmenee perinnän aikana, kun käytetään polymorfismia. Niin kauan kuin vanhemman staattista menetelmää ei julisteta lopulliseksi, sama alitason staattinen menetelmä voidaan koodata lapsiluokassa ikään kuin se ohitettaisiin. Tätä kutsutaan teknisesti piilottamiseksi korvaamisen sijasta, koska staattista menetelmää ei voida ohittaa.

Jos piilottamista käytetään, jos vanhempaa staattista menetelmää käytetään luokan nimen avulla, käytetään päämenetelmää. Jos ohitettuun alitason staattiseen menetelmään päästään käyttämällä objektin nimeä, ohitettua alimenetelmää käytetään. Ongelma ilmenee, kun aliobjekti päivitetään vanhempana. Tässä tapauksessa kutsu upcast -lapsistaattiseen menetelmään käyttää päämenetelmää odotetun alimenetelmän sijaan. Todellisessa polymorfismissa lapsimenetelmä olisi se, joka aktivoidaan lähetyksen jälkeen.