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 finns. 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 har också 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å variabeln "bla" associerad med objekt A är "A.Blah", medan det fulla namnet på variabeln "bla" associerad 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 denS eget unika värde.
instansvariabler förväxlas ofta med statiska 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 tilldelats dem kan instansvariabler endast vara synliga i ett visst objekt, till ett objekt och dess underklasser eller till objektet där det 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 kapslingsprinciper i objektorienterad programmering. Trots detta tabu finns det tillfällen där offentliga instaNCE -variabler ä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.