Mis on eksemplarimuutuja?

Eksemplari muutuja on objektorienteeritud programmeerimise andmeosa, millel on iga objekti jaoks, milles see asub, oma kordumatu väärtus. Eksemplari muutujaid võib nimetada ka eksemplariliikmeteks, mittestaatilisteks väljadeks ja andmeliikmeteks. Need on enamiku objektide oluline osa, sisaldades konkreetseid andmeid, mida objekt arvutamiseks kasutab.
Näiteks kui on olemas kaks objekti, A ja B, kus objektil A on eksemplari muutuja nimega “blah” ja objektil B on ka eksemplari muutuja nimega “blah”, on need kaks “bla” muutujat erinevad olemid. Iga muutuja on seotud objektiga, mis seda kapseldab. Objektiga A seotud muutuja “blah” täisnimi on “A.blah”, samas kui objektiga B seotud muutuja “blah” täisnimi on “B.blah”. Igal juhul, kui neil muutujatel võib olla oma väärtus. Kui objektid A ja B on sama tüüpi ja luuakse teine ​​seda tüüpi objekt C ja objektil C on ka eksemplari muutuja “blah”, millel võib olla oma kordumatu väärtus.

Eksemplarimuutujaid aetakse sageli segi staatiliste muutujatega, kuid need kaks on oluliselt erinevad. Erinevalt eksemplarimuutujatest, millest igal teatud tüüpi objektil on oma, on staatilistel muutujatel ainult üks väärtus ja see väärtus on sama iga vastavat tüüpi objekti puhul. Staatilisi muutujaid nimetatakse sageli klassimuutujateks, mis ei ole samad, mis eksemplarimuutujad.

Olenevalt neile määratud nähtavuse omadustest võivad eksemplarimuutujad olla nähtavad ainult konkreetse objekti sees, objektile ja selle alamklassidele või objektile, milles see asub, aga ka mis tahes muudele objektidele. Seda viimast nähtavuse tüüpi, mida nimetatakse avalikuks nähtavuseks, peetakse sageli näiteks muutujate puhul halvaks tavaks, kuna objektorienteeritud programmeerimisel on lihtne kapseldamise põhimõtteid rikkuda. Vaatamata sellele tabule on aegu, mil avaliku eksemplari muutujad on kasulikud. Näiteks on paljudel Java standardklassidel avaliku eksemplari muutujad, mis võimaldab mõnikord atribuute hõlpsalt muuta.

Eksemplari muutuja nähtavus tuleb mängu ka pärimisega. Kui üks klass pärib teiselt, ei anna see kohe mõlemale klassile juurdepääsu üksteise eksemplarimuutujatele. Ülemklassi ja alamklassi eraeksemplari muutujad piirduvad ainult nende klassidega, seega ei saa ülemklass näha alamklassi privaatmuutujat ja vastupidi. Ainsad eksemplarimuutujad, mida nii ülemklass kui ka alamklass näevad, on ülemklassi kaitstud muutujad.