Hvad er en forekomstvariabel?
En forekomstvariabel er et stykke data i objektorienteret programmering, der har sin egen unikke værdi for hvert objekt, hvor det befinder sig. Forekomstvariabler kan også kaldes forekomstmedlemmer, ikke-statiske felter og datamedlemmer. De er en vigtig del af de fleste objekter, idet de indeholder specifikke data, som objektet bruger til beregning.
Hvis der f.eks. Findes to objekter, A og B, hvor objekt A har en forekomstvariabel kaldet "bla", og objekt B også har en forekomstvariabel kaldet "bla", er de to "blah" -variabler forskellige enheder. Hver variabel er knyttet til det objekt, der indkapsler det. Det fulde navn på variablen "blah" tilknyttet objekt A er "A.blah", mens det fulde navn på variablen "blah", der er tilknyttet objekt B, er "B.blah." Hver hvis disse variabler kan have sin egen værdi. Hvis objekter A og B er af samme type, og der oprettes et andet objekt af denne type, C, og objekt C har også en forekomstvariabel "bla", der kan have sin egen unikke værdi.
Forekomstvariabler forveksles ofte med statiske variabler, men de to er markant forskellige. I modsætning til forekomstvariabler, hvor hvert objekt af en bestemt type har sin egen, har statiske variabler kun en værdi, og denne værdi er den samme for hvert objekt af den passende type. Statiske variabler kaldes ofte klassevariabler, som ikke er de samme som forekomstvariabler.
Afhængigt af de tildelte synlighedsegenskaber, kan forekomstvariabler kun være synlige inde i et bestemt objekt, et objekt og dets underklasser eller for det objekt, hvori det ligger, samt andre objekter. Den endelige type synlighed, kaldet offentlig synlighed, betragtes ofte som dårlig praksis for eksempel variabler, fordi det er let at overtræde indkapslingsprincipper i objektorienteret programmering. På trods af dette tabu er der tidspunkter, hvor variabler i offentlige instanser er nyttige. For eksempel har mange standardklasser i Java offentlige instansvariabler, som til tider muliggør let ændring af egenskaber.
Synligheden af en forekomstvariabel kommer også i spil med arv. Hvis en klasse arver fra en anden, giver dette ikke begge klasser adgang til hinandens forekomstvariabler. Variabler i private instanser i superklassen og underklassen forbliver kun begrænset til disse klasser, så en privat variabel i underklassen kan ikke ses af superklassen, og vice versa. De eneste forekomstvariabler, som både superklassen og underklassen kan se, er beskyttede variabler i superklassen.