Példányváltozó vs helyi változó
A példányváltozó az objektumorientált programozásban jelen lévő változótípus. Ez egy változó, amely egy osztályban van definiálva, és ennek az osztálynak minden egyes objektuma a változó külön másolatát tartalmazza. Másrészt a helyi változók használata nem korlátozódik az objektumorientált programozási nyelvekre. Ez egy olyan változó, amely csak egy adott kódblokkon belül értékelhető (pl. függvény, hurokblokk stb.), amelyben definiálva van. Emiatt a helyi változóknak helyi hatókörük van.
Mi az a példányváltozó?
A példányváltozók az objektumorientált programozásban használatosak az osztály minden objektumának állapotának tárolására. Tagváltozóknak vagy mezőváltozóknak is nevezik őket. A példányváltozók a statikus kulcsszó használata nélkül deklarálódnak a Java-ban. A példányváltozókban tárolt értékek minden objektumra egyediek (minden objektumnak külön másolata van), és a bennük tárolt értékek az adott objektum állapotát reprezentálják. Egy példányváltozó számára helyet foglal le a kupacban, amikor az objektum le van foglalva a kupacban. Ezért a példányváltozók mindaddig a memóriában maradnak, amíg az objektum él. Például egy autó színe független egy másik autó színétől. Tehát egy autóobjektum színe egy példányváltozóban tárolható. A gyakorlatban a példányváltozókat osztályokon belül deklarálják, és a metódusokon kívül. Általában a példányváltozók privátként vannak deklarálva, így csak a deklarált osztályon belül érhetők el.
Mi az a helyi változó?
A helyi változók olyan változók, amelyek helyi hatókörrel rendelkeznek, és egy adott kódblokkon belül vannak deklarálva. A lokális változókat olyan változóknak tekinthetjük, amelyeket egy metódus az ideiglenes állapot tárolására használ. A helyi változó hatókörét a változó deklarált helye határozza meg, és erre a célra nem használnak speciális kulcsszavakat. A helyi változóhoz való hozzáférés általában a deklarált kódblokkon belül korlátozott (azaz az adott kódblokk nyitó és záró kapcsos zárójelei között). A helyi változókat általában a hívási veremben tárolják. Ez lehetővé tenné, hogy a rekurzív függvényhívások fenntartsák a helyi változók saját másolatait, amelyeket külön memóriacímterekben tárolnak. Amikor a metódus befejezi a végrehajtását, a metódusra vonatkozó információk kiugrik a hívási veremből, és megsemmisítik a tárolt helyi változókat is.
Mi a különbség a példányváltozó és a helyi változó között?
A példányváltozók a metódusokon kívüli osztályokon belül vannak deklarálva, és egy objektum állapotát tárolják, míg a lokális változókat kódblokkon belül deklarálják, és egy metódus állapotának tárolására szolgálnak. Egy példányváltozó addig él, amíg az adott változót tartalmazó objektum él, míg egy helyi változó az adott metódus/kódblokk végrehajtása alatt él. Egy példányváltozó (amely nyilvánosan deklarált) elérhető az osztályon belül, míg a helyi változó csak a deklarált kódblokkon belül érhető el. A példányváltozók használata csak az objektumorientált programozásra korlátozódik, míg a helyi változóknak nincs ilyen korlátozása.