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 har en separat kopia av den 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 den är definierad. På grund av detta sägs lokala variabler ha en lokal omfattning.
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 är allokerat 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 utanför metoder. Vanligtvis deklareras instansvariabler som privata så att de endast kan nås inom den klass den deklareras.
Vad är en lokal variabel?
Lokala variabler är variabler som har ett lok alt omfång, och de deklareras inom ett specifikt kodblock. Lokala variabler kan ses som variabler som används av en metod för att lagra dess temporära tillstånd. Omfattningen av en lokal variabel bestäms med platsen där 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 öppnings- och stängningsklammerna för det kodblocket). Lokala variabler lagras vanligtvis i anropsstacken. Detta skulle tillåta rekursiva funktionsanrop att behålla sina egna kopior av de lokala variablerna för att lagras i separata minnesadressutrymmen. När metoden avslutar sin exekvering, kommer information om den metoden att plockas ut från anropsstacken, vilket också förstör de lokala variablerna som lagrades.
Vad är skillnaden mellan instansvariabel och lokal variabel?
Förekomstvariabler 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 objektet som innehåller den variabeln är live, medan en lokal variabel är live under exekveringen av metoden/kodblocket. En instansvariabel (som är deklarerad offentlig) kan nås inom klassen, medan en lokal variabel endast kan nås inom kodblocket som den deklareras. Användning av instansvariabler är endast begränsad till objektorienterad programmering, medan lokala variabler inte har en sådan begränsning.