Esindimuutuja vs kohalik muutuja
Esijuhtmuutuja on teatud tüüpi muutuja, mis on objektorienteeritud programmeerimises olemas. See on muutuja, mis on määratletud klassis ja iga selle klassi objekt sisaldab selle muutuja eraldi koopiat. Teisest küljest ei piirdu kohalike muutujate kasutamine objektorienteeritud programmeerimiskeeltega. See on muutuja, mida saab hinnata ainult konkreetse koodiploki (nt funktsioon, tsükliplokk jne) piires, milles see on määratletud. Sel põhjusel on kohalikel muutujatel kohalik ulatus.
Mis on eksemplarimuutuja?
Esijuhtmuutujaid kasutatakse objektorienteeritud programmeerimises klassi iga objekti oleku salvestamiseks. Neid tuntakse ka liikmemuutujate või väljamuutujatena. Eksemplarimuutujad deklareeritakse Java-s staatilist märksõna kasutamata. Eksemplari muutujatesse salvestatud väärtused on iga objekti jaoks unikaalsed (igal objektil on eraldi koopia) ja neisse salvestatud väärtused esindavad selle objekti olekut. Eksemplari muutuja jaoks eraldatakse ruum kuhjas, kui see objekt on kuhjas jaotatud. Seetõttu hoitakse eksemplari muutujaid mälus seni, kuni objekt on aktiivne. Näiteks ühe auto värv ei sõltu teise auto värvist. Seega saab autoobjekti värvi salvestada eksemplari muutujasse. Praktikas deklareeritakse eksemplari muutujad klassides ja väljaspool meetodeid. Tavaliselt deklareeritakse eksemplari muutujad privaatseks, nii et neile pääseb juurde ainult deklareeritud klassis.
Mis on kohalik muutuja?
Kohalikud muutujad on lokaalse ulatusega muutujad ja need deklareeritakse kindlas koodiplokis. Kohalikke muutujaid võib vaadelda muutujatena, mida meetod kasutab oma ajutise oleku salvestamiseks. Kohaliku muutuja ulatus määratakse kindlaks asukoha järgi, kus muutuja deklareeritakse, ja selleks ei kasutata spetsiaalseid märksõnu. Tavaliselt on juurdepääs kohalikule muutujale piiratud koodiploki sees, milles see deklareeritakse (st selle koodiploki ava- ja sulgesulgude vahel). Kohalikud muutujad salvestatakse tavaliselt kõne pinu. See võimaldaks rekursiivsetel funktsioonikutsetel säilitada kohalike muutujate koopiad, mis salvestatakse eraldi mälu aadressiruumidesse. Kui meetod on täitmise lõpetanud, hüppatakse selle meetodi kohta käiv teave kõnepinust välja, hävitades ka salvestatud kohalikud muutujad.
Mis vahe on eksemplarimuutujal ja kohalikul muutujal?
Estendimuutujad deklareeritakse klassides väljaspool meetodeid ja need salvestavad objekti oleku, samas kui kohalikud muutujad deklareeritakse koodiplokkides ja neid kasutatakse meetodi oleku salvestamiseks. Eksemplari muutuja on aktiivne seni, kuni seda muutujat sisaldav objekt on aktiivne, samas kui kohalik muutuja on selle meetodi/koodiploki täitmise ajal aktiivne. Eksemplari muutujale (mis on kuulutatud avalikuks) pääseb juurde klassi sees, samas kui kohalikule muutujale pääseb juurde ainult selle koodiploki sees, kus see on deklareeritud. Eksemplarimuutujate kasutamine on piiratud ainult objektorienteeritud programmeerimisega, samas kui kohalikel muutujatel sellist piirangut pole.