Skip to main content

Vad är en instansvariabel?

En instansvariabel är en del av data i objektorienterad programmering som har sitt eget unika värde för varje objekt där den ligger.Instansvariabler kan också kallas instansmedlemmar, icke-statiska fält och datamedlemmar.De är en viktig del av de flesta objekt som håller specifika data som objektet använder för beräkning.

Till exempel om det finns två objekt, A och B, där objekt A har en instansvariabel som kallas bla och objekt B ocksåhar en instansvariabel som kallas bla, de två bla variablerna är distinkta enheter.Varje variabel är associerad med objektet som kapslar in det.Det fulla namnet på den variabla bla som är associerad med objekt A är A.Blah, medan det fulla namnet på den variabla bla som är associerade med objekt B är B.Blah.Var och en om dessa variabler kan ha sitt eget värde.Om objekt a och b är av samma typ, och ett annat objekt av den typen, c, skapas, och objekt c kommer också att ha en instansvariabel bla, som kan ha sitt eget unika värde.

instansvariabler är ofta förvirrade medStatiska variabler, men de två är betydligt olika.Till skillnad från instansvariabler, av vilka varje objekt av en viss typ har sina egna, statiska variabler har bara ett värde, och detta värde är detsamma för varje objekt av lämplig typ.Statiska variabler kallas ofta klassvariabler, som inte är desamma som instansvariabler.

Beroende på synlighetsegenskaperna som tilldelas dem, kan instansvariabler endast vara synliga i ett visst objekt, till ett objekt och dess underklasser eller till objektetdär den finns såväl som andra objekt.Den sista typen av synlighet, kallad allmän synlighet, betraktas ofta som dålig praxis till exempel variabler, eftersom det är lätt att kränka kapslingsprinciperna i objektorienterad programmering.Trots detta tabu finns det tillfällen där offentliga instansvariabler är användbara.Till exempel har många standardklasser i Java offentliga instansvariabler, vilket ibland möjliggör enkel modifiering av egenskaper.

Synligheten för en instansvariabel spelar också in med arv.Om en klass ärver från en annan ger detta inte omedelbart båda klasserna tillgång till varandras instansvariabler.Privata instansvariabler i superklassen och underklassen förblir begränsade till endast dessa klasser, så en privat variabel i underklassen kan inte ses av superklassen och vice versa.De enda instansvariablerna som både superklassen och underklassen kan se är skyddade variabler i superklassen.