Astme muutuja vs kohalik muutuja
Eksemplarmuutuja on muutuja tüüp, mis esineb objektorienteeritud programmeerimises. See on muutuja, mis on määratletud klassis ja selle klassi igas objektis on selle muutuja eraldi koopia. Teisest küljest ei piirdu kohalike muutujate kasutamine objektorienteeritud programmeerimiskeeltega. See on muutuja, mida saab hinnata ainult selle konkreetse koodiploki sees (nt funktsioon, silmuseplokk jne), milles see on määratletud. Sel põhjusel väidetakse, et kohalikel muutujatel on lokaalne ulatus.
Mis on astmemuutuja??
Eksemplaride muutujaid kasutatakse objektorienteeritud programmeerimisel klassi iga objekti oleku salvestamiseks. Neid tuntakse ka liikmete muutujatena või väljamuutujatena. Eksemplarimuutujad deklareeritakse ilma Java staatilist märksõna kasutamata. Juhtmuutujates salvestatud väärtused on iga objekti puhul ainulaadsed (igal objektil on eraldi koopia) ja neisse salvestatud väärtused tähistavad selle objekti olekut. Eksemplari muutuja jaoks eraldatakse ruumi hunnikus, kui see objekt on hunnikus eraldatud. 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. Nii saab autoobjekti värvi salvestada näiteks astmemuutujasse. Praktikas deklareeritakse esinemismuutujad klassides ja väljaspool meetodeid. Tavaliselt kuulutatakse esinemismuutujad privaatseks, nii et neile pääseks juurde ainult selles klassis, kus see on deklareeritud.
Mis on kohalik muutuja?
Kohalikud muutujad on muutujad, millel on lokaalne ulatus ja need deklareeritakse konkreetse koodiploki piires. Kohalikke muutujaid võib vaadelda muutujatena, mida meetod kasutab ajutise oleku salvestamiseks. Kohaliku muutuja ulatus määratakse muutuja deklareerimise koha järgi ja spetsiaalseid märksõnu selleks ei kasutata. Tavaliselt on juurdepääs kohalikule muutujale piiratud koodiplokis, milles see deklareeritakse (st selle koodiploki avamis- ja sulgemistraktide vahel). Kohalikud muutujad salvestatakse tavaliselt kõnede pinu. See võimaldaks rekursiivsetel funktsioonikõnedel säilitada oma lokaalsete muutujate koopiad eraldi mälu aadressiruumides. Kui meetod on selle täitmise lõpetanud, hüppatakse kõnemeki kohta selle meetodi kohta teave, hävitades ka salvestatud kohalikud muutujad.
Mis vahe on astme muutuja ja kohaliku muutuja vahel??
Ekspertide muutujad deklareeritakse klassidesiseselt väljaspool meetodeid ja need salvestavad objekti oleku, kohalikud muutujad aga koodiplokkides ja neid kasutatakse meetodi oleku salvestamiseks. Näitemuutuja on aktiivne seni, kuni objekt, mis seda muutujat sisaldab, on aktiivne, samas kui kohalik muutuja on selle meetodi / koodiploki täitmise ajal aktiivne. Eksemplari muutujale (see on kuulutatud avalikuks) saab juurde pääseda klassis, samas kui kohalikule muutujale pääseb juurde ainult selle koodiploki piires, milleks see kuulutatakse. Eksemplaride muutujate kasutamine on piiratud ainult objektorienteeritud programmeerimisega, samas kui kohalikel muutujatel pole sellist piirangut.