Instansvariabel vs lokal variabel
En instansvariabel är en typ av variabel som finns i objektorienterad programmering. Det är en variabel som definieras i en klass, och varje objekt i den klassen innehåller en separat kopia av variabeln. Å andra sidan är användningen av lokala variabler inte begränsad till objektorienterade programmeringsspråk. Det är en variabel som endast kan bedömas inom ett visst kodblock (t.ex. funktion, loopblock etc.) där det definieras. På grund av denna anledning sägs lokala variabler ha ett lokalt omfång.
Vad är en instansvariabel?
Instansvariabler används i objektorienterad programmering för att lagra tillståndet för varje objekt i en klass. De är också kända som medlemsvariabler eller fältvariabler. Instansvariabler deklareras utan att använda det statiska nyckelordet i Java. Värdena som lagras i instansvariabler är unika för varje objekt (varje objekt har en separat kopia), och värdena som lagras i dem representerar objektets tillstånd. Utrymme för en instansvariabel tilldelas i högen när det objektet tilldelas i högen. Därför hålls instansvariabler i minnet så länge objektet är live. Till exempel är färgen på en bil oberoende av färgen på en annan bil. Så färgen på ett bilobjekt kan lagras i en instansvariabel. I praktiken deklareras instansvariabler i klasser och externa metoder. Vanligtvis,instansvariabler deklareras som privata så att de endast kan nås inom den klass som deklareras.
Vad är en lokal variabel?
Lokala variabler är variabler som har ett lokalt omfång och deklareras inom ett specifikt kodblock. Lokala variabler kan ses som variabler som används av en metod för att lagra dess tillfälliga tillstånd. Omfattningen av en lokal variabel bestäms med hjälp av den plats som variabeln deklareras och speciella nyckelord används inte för detta ändamål. Vanligtvis är åtkomst till en lokal variabel begränsad inom kodblocket som den deklareras (dvs. mellan det öppna och stängande hakparenteserna för det kodblocket). Lokala variabler lagras vanligtvis i samtalsstacken. Detta skulle göra det möjligt för rekursiva funktionssamtal att behålla sina egna kopior av de lokala variablerna som ska lagras i separata minnesadressutrymmen. När metoden är klar körs information om metoden ut från samtalsstacken, vilket också förstör de lokala variablerna som lagrades.
Vad är skillnaden mellan instansvariabel och lokal variabel?
Instansvariabler deklareras inom klasser utanför metoder och de lagrar tillståndet för ett objekt, medan lokala variabler deklareras inom kodblock, och de används för att lagra tillståndet för en metod. En instansvariabel är live så länge som objektet som innehåller variabeln är live, medan en lokal variabel är live under körningen av den metoden / kodblocket. En instansvariabel (som förklaras offentlig) kan nås inom klassen, medan en lokal variabel endast kan nås inom det kodblock som den deklareras. Användning av instansvariabler är endast begränsad till objektorienterad programmering, medan lokala variabler inte har en sådan begränsning.