Wat is een exemplaarvariabele?
Een instantievariabele is een gegevensbestand in objectgeoriënteerd programmeren dat zijn eigen unieke waarde heeft voor elk object waarin het zich bevindt. Instantievariabelen kunnen ook instantieleden, niet-statische velden en gegevensleden worden genoemd. Ze vormen een belangrijk onderdeel van de meeste objecten en bevatten specifieke gegevens die het object voor de berekening gebruikt.
Als er bijvoorbeeld twee objecten bestaan, A en B, waarbij object A een instantievariabele met de naam "blah" heeft en object B ook een instantievariabele met de naam "blah", zijn de twee "blah" -variabelen verschillende entiteiten. Elke variabele is gekoppeld aan het object dat het inkapselt. De volledige naam van de variabele "blah" geassocieerd met object A is "A.blah", terwijl de volledige naam van de variabele "blah" geassocieerd met object B "B.blah" is. Elk als deze variabelen hun eigen waarde kunnen hebben. Als objecten A en B van hetzelfde type zijn en er een ander object van dat type, C, wordt gemaakt, en object C ook een instantievariabele "blah" heeft, die een eigen unieke waarde kan hebben.
Instantievariabelen worden vaak verward met statische variabelen, maar de twee verschillen aanzienlijk. In tegenstelling tot instantievariabelen, waarvan elk object van een bepaald type zijn eigen heeft, hebben statische variabelen slechts één waarde, en deze waarde is hetzelfde voor elk object van het juiste type. Statische variabelen worden vaak klassenvariabelen genoemd, die niet hetzelfde zijn als instantievariabelen.
Afhankelijk van de zichtbaarheidseigenschappen die eraan zijn toegewezen, kunnen instantievariabelen alleen zichtbaar zijn binnen een bepaald object, voor een object en de subklassen ervan, of voor het object waarin het zich bevindt, evenals andere objecten. Dat laatste type zichtbaarheid, publieke zichtbaarheid genoemd, wordt vaak beschouwd als een slechte gewoonte, bijvoorbeeld variabelen, omdat het gemakkelijk is om inkapselingsprincipes te schenden in objectgeoriënteerd programmeren. Ondanks dit taboe zijn er momenten waarop variabelen van openbare instanties nuttig zijn. Veel standaardklassen op Java hebben bijvoorbeeld variabelen voor openbare instanties, waardoor eigenschappen soms gemakkelijk kunnen worden gewijzigd.
De zichtbaarheid van een instantievariabele speelt ook bij overerving. Als de ene klasse van de andere overneemt, geeft dit niet beide klassen onmiddellijk toegang tot elkaars instantievariabelen. Variabelen van privéinstanties in de superklasse en subklasse blijven beperkt tot alleen die klassen, dus een privévariabele in de subklasse kan niet worden gezien door de superklasse en vice versa. De enige instantievariabelen die zowel de superklasse als de subklasse kunnen zien, zijn beschermde variabelen in de superklasse.