Skillnad mellan instansvariabel och lokal variabel

Anonim

Instansvariabel vs Lokal variabel

En instansvariabel är en typ av variabel som är närvarande i objektorienterad programmering. Det är en variabel som definieras i en klass, och varje objekt i den klassen innehåller 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 kvarter (t.ex. funktion, loop-block, etc.) där den definieras. På grund av denna anledning sägs lokala variabler ha en lokal räckvidd.

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. Instansvariablerna deklareras utan att använda det statiska sökordet i Java. Värdena som lagras i instansvariabler är unika för varje objekt (varje objekt har en separat kopia), och de värden som lagras i dem representerar tillståndet för det objektet. Rymden för en instansvariabel är allokerad i högen när objektet är allokerat i högen. Därför förvaras instansvariabler i minnet så länge objektet är levande. Till exempel är färgen på en bil oberoende av färgen på en annan bil. Så kan färgen på ett bilobjekt lagras i en instansvariabel. I praktiken förklaras förekomstvariabler inom klasser och externa metoder. Vanligtvis förklaras förekomstvariablerna som privata så att de endast kunde nås inom den klass som deklarerats.

Vad är en lokal variabel?

Lokala variabler är variabler som har en lokal räckvidd och de deklareras inom ett specifikt kodblock. Lokala variabler kan ses som variabler som används av en metod för att lagra sitt temporära tillstånd. Omfattningen av en lokal variabel bestäms med hjälp av den plats som variabeln deklareras och särskilda nyckelord används inte för detta ändamål. Typiskt är åtkomsten till en lokal variabel begränsad inom kodblocket som det deklareras (dvs mellan öppning och stängning av det kodblocket). Lokala variabler lagras vanligtvis i samtalstapeln. Detta skulle möjliggöra rekursiva funktionssamtal för att behålla sina egna kopior av de lokala variablerna som ska lagras i separata minnesadressrum. När metoden avslutar sin exekvering dras information om den metoden ut från samtalstacken, och förstör också de lokala variablerna som lagrates.

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 förklaras inom kodblock och de används för lagring av 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 levande under exekveringen av den metoden / kodblocket. En instansvariabel (som deklareras 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.