Instantievariabele versus lokale variabele
Een instantievariabele is een type variabele dat aanwezig is in objectgeoriënteerd programmeren. Het is een variabele die is gedefinieerd in een klasse, en elk object van die klasse bevat een afzonderlijke kopie van die variabele. Aan de andere kant is het gebruik van lokale variabelen niet beperkt tot objectgeoriënteerde programmeertalen. Het is een variabele die alleen kan worden beoordeeld binnen een bepaald codeblok (bijv. Functie, lusblok, etc.) waarin het is gedefinieerd. Om deze reden zouden lokale variabelen een lokaal bereik hebben.
Wat is een instantievariabele?
Instancevariabelen worden gebruikt in objectgeoriënteerd programmeren voor het opslaan van de status van elk object in een klasse. Ze worden ook wel lidvariabelen of veldvariabelen genoemd. Instantievariabelen worden gedeclareerd zonder het statische sleutelwoord in Java te gebruiken. De waarden die zijn opgeslagen in instantievariabelen zijn uniek voor elk object (elk object heeft een aparte kopie), en de waarden die erin zijn opgeslagen, vertegenwoordigen de toestand van dat object. Ruimte voor een instantievariabele wordt toegewezen in de heap, wanneer dat object in de heap wordt toegewezen. Daarom worden instantievariabelen in het geheugen bewaard zolang het object live is. De kleur van een auto is bijvoorbeeld onafhankelijk van de kleur van een andere auto. Zo kan de kleur van een auto-object worden opgeslagen in een instantievariabele. In de praktijk worden instantievariabelen gedeclareerd binnen klassen en buiten methoden. Meestalinstantievariabelen worden als privé gedeclareerd, zodat ze alleen toegankelijk zijn binnen de klasse waarin ze zijn gedeclareerd.
Wat is een lokale variabele?
Lokale variabelen zijn variabelen met een lokaal bereik, en ze worden gedeclareerd binnen een specifiek codeblok. Lokale variabelen kunnen worden gezien als variabelen die door een methode worden gebruikt om de tijdelijke toestand op te slaan. Het bereik van een lokale variabele wordt bepaald met behulp van de locatie waar de variabele is gedeclareerd, en hiervoor worden geen speciale sleutelwoorden gebruikt. Typisch is de toegang tot een lokale variabele beperkt binnen het codeblok dat deze is gedeclareerd (dwz tussen de openende en sluitende accolades van dat codeblok). Lokale variabelen worden doorgaans opgeslagen in de call-stack. Dit zou het mogelijk maken dat recursieve functieaanroepen hun eigen kopieën van de lokale variabelen behouden die in afzonderlijke geheugenadresruimten kunnen worden opgeslagen. Wanneer de methode zijn uitvoering heeft voltooid, wordt informatie over die methode uit de call-stack gehaald, waarbij ook de lokale variabelen die zijn opgeslagen, worden vernietigd.
Wat is het verschil tussen instantievariabele en lokale variabele?
Instancevariabelen worden gedeclareerd binnen klassen buiten methoden, en ze slaan de status van een object op, terwijl lokale variabelen worden gedeclareerd binnen codeblokken, en ze worden gebruikt voor het opslaan van de status van een methode. Een instantievariabele is live zolang het object dat die variabele bevat live is, terwijl een lokale variabele live is tijdens de uitvoering van dat methode / codeblok. Een instantievariabele (die openbaar is verklaard) is toegankelijk binnen de klasse, terwijl een lokale variabele alleen toegankelijk is binnen het codeblok dat deze is gedeclareerd. Het gebruik van instantievariabelen is alleen beperkt tot objectgeoriënteerd programmeren, terwijl lokale variabelen een dergelijke beperking niet hebben.