Instanssimuuttuja vs paikallinen muuttuja
Instanssimuuttuja on muuttujan tyyppi, joka esiintyy olioohjelmoinnissa. Se on muuttuja, joka on määritelty luokassa, ja jokaisessa luokan objektissa on erillinen kopio kyseisestä muuttujasta. Toisa alta paikallisten muuttujien käyttö ei rajoitu olioohjelmointikieliin. Se on muuttuja, jota voidaan arvioida vain tietyssä koodilohkossa (esim. funktio, silmukkalohko jne.), jossa se on määritelty. Tästä syystä paikallisten muuttujien sanotaan olevan paikallinen laajuus.
Mikä on ilmentymämuuttuja?
Instanssimuuttujia käytetään olioohjelmoinnissa luokan jokaisen objektin tilan tallentamiseen. Ne tunnetaan myös jäsenmuuttujina tai kenttämuuttujina. Ilmentymämuuttujat ilmoitetaan ilman staattista avainsanaa Javassa. Ilmentymämuuttujiin tallennetut arvot ovat yksilöllisiä jokaiselle objektille (jokaisella oliolla on oma kopio), ja niihin tallennetut arvot edustavat objektin tilaa. Tila ilmentymämuuttujalle varataan kasassa, kun kyseinen objekti on varattu kasaan. Siksi ilmentymämuuttujat säilytetään muistissa niin kauan kuin objekti on elossa. Esimerkiksi yhden auton väri on riippumaton toisen auton väristä. Autoobjektin väri voidaan siis tallentaa ilmentymämuuttujaan. Käytännössä ilmentymämuuttujat ilmoitetaan luokkien sisällä ja ulkopuolisten menetelmien sisällä. Yleensä ilmentymämuuttujat ilmoitetaan yksityisiksi, jotta niitä voidaan käyttää vain siinä luokassa, jossa ne on ilmoitettu.
Mikä on paikallinen muuttuja?
Paikalliset muuttujat ovat muuttujia, joilla on paikallinen laajuus, ja ne ilmoitetaan tietyssä koodilohkossa. Paikalliset muuttujat voidaan nähdä muuttujina, joita menetelmä käyttää väliaikaisen tilansa tallentamiseen. Paikallisen muuttujan laajuus määritetään sen sijainnin perusteella, jossa muuttuja on ilmoitettu, eikä erityisiä avainsanoja käytetä tähän tarkoitukseen. Tyypillisesti pääsy paikalliseen muuttujaan on rajoitettu sen koodilohkon sisällä, jossa se on ilmoitettu (eli kyseisen koodilohkon avaus- ja sulkemissulkujen välissä). Paikalliset muuttujat tallennetaan tyypillisesti puhelupinoon. Tämä mahdollistaisi rekursiiviset funktiokutsut säilyttämään omat kopionsa paikallisista muuttujista, jotka tallennetaan erillisiin muistin osoiteavaruksiin. Kun menetelmä on suorittanut loppuun, menetelmää koskevat tiedot ponnahtaa esiin kutsupinosta, mikä myös tuhoaa tallennetut paikalliset muuttujat.
Mitä eroa esiintymämuuttujan ja paikallisen muuttujan välillä on?
Instanssimuuttujat ilmoitetaan luokkien sisällä menetelmien ulkopuolella, ja ne tallentavat objektin tilan, kun taas paikalliset muuttujat ilmoitetaan koodilohkoissa ja niitä käytetään menetelmän tilan tallentamiseen. Ilmentymämuuttuja on käytössä niin kauan kuin objekti, joka sisältää kyseisen muuttujan, on elossa, kun taas paikallinen muuttuja on käytössä kyseisen menetelmän/koodilohkon suorittamisen aikana. Ilmentymämuuttujaa (joka on ilmoitettu julkiseksi) voidaan käyttää luokassa, kun taas paikallista muuttujaa voidaan käyttää vain siinä koodilohkossa, jossa se on ilmoitettu. Ilmentymämuuttujien käyttö on rajoitettu vain olioohjelmointiin, kun taas paikallisilla muuttujilla ei ole tällaista rajoitusta.