Hva er en forekomstvariabel?
En forekomstvariabel er et stykke data i objektorientert programmering som har sin egen unike verdi for hvert objekt den ligger i. Forekomstvariabler kan også kalles forekomstmedlemmer, ikke-statiske felt og datamedlemmer. De er en viktig del av de fleste objekter, og inneholder spesifikke data som objektet bruker til beregning.
Hvis det for eksempel eksisterer to objekter, A og B, der objekt A har en forekomstvariabel kalt "bla", og objekt B også har en forekomstvariabel kalt "bla", er de to "blah" -variablene forskjellige enheter. Hver variabel er tilknyttet objektet som innkapsler det. Det fulle navnet på variabelen "bla" tilknyttet objekt A er "A.blah", mens det fulle navnet på variabelen "bla" assosiert med objektet B er "B.blah." Hver hvis disse variablene kan ha sin egen verdi. Hvis objekter A og B er av samme type, og det opprettes et annet objekt av den typen, C, og objekt C vil også ha en forekomstvariabel "bla", som kan ha sin egen unike verdi.
Forekomstvariabler forveksles ofte med statiske variabler, men de to er vesentlig forskjellige. I motsetning til forekomstvariabler, der hvert objekt av en bestemt type har sin egen, har statiske variabler bare en verdi, og denne verdien er den samme for hvert objekt av den aktuelle typen. Statiske variabler kalles ofte klassevariabler, som ikke er de samme som forekomstvariabler.
Avhengig av synlighetsegenskapene som er tilordnet dem, kan forekomstvariabler bare være synlige inne i et bestemt objekt, for et objekt og dets underklasser, eller for objektet det ligger i, samt andre objekter. Den endelige typen synlighet, kalt offentlig synlighet, blir ofte sett på som dårlig praksis for eksempel variabler, fordi det er lett å bryte innkapslingsprinsipper i objektorientert programmering. Til tross for dette tabuet, er det tidspunkter der variabler i offentlige instanser er nyttige. For eksempel har mange standardklasser i Java offentlige instansvariabler, som til tider muliggjør enkel endring av egenskaper.
Synligheten til en forekomstvariabel spiller også inn i arv. Hvis en klasse arver fra en annen, gir ikke disse begge klassene øyeblikkelig tilgang til hverandres forekomstvariabler. Variable forekomstvariabler i superklassen og underklassen er fortsatt begrenset til kun de klassene, så en privat variabel i underklassen kan ikke sees av superklassen, og omvendt. De eneste forekomstvariablene som både superklassen og underklassen kan se er beskyttede variabler i superklassen.