Varijabla instance naspram lokalne varijable
Varijabla instance je vrsta varijable koja je prisutna u objektno orijentiranom programiranju. To je varijabla koja je definirana u klasi, a svaki objekt te klase sadrži zasebnu kopiju te varijable. S druge strane, korištenje lokalnih varijabli nije ograničeno na objektno orijentirane programske jezike. To je varijabla koja se može procijeniti samo unutar određenog bloka koda (npr. funkcije, bloka petlje itd.) u kojem je definirana. Zbog toga se kaže da lokalne varijable imaju lokalni opseg.
Što je varijabla instance?
Varijable instance koriste se u objektno orijentiranom programiranju za pohranjivanje stanja svakog objekta u klasi. Također su poznate kao varijable člana ili varijable polja. Varijable instance se deklariraju bez korištenja ključne riječi static u Javi. Vrijednosti pohranjene u varijablama instance jedinstvene su za svaki objekt (svaki objekt ima zasebnu kopiju), a vrijednosti pohranjene u njima predstavljaju stanje tog objekta. Prostor za varijablu instance alociran je u hrpi, kada je taj objekt alociran u hrpi. Stoga se varijable instance čuvaju u memoriji sve dok je objekt živ. Na primjer, boja jednog automobila je neovisna o boji drugog automobila. Tako se boja objekta automobila može pohraniti u varijablu instance. U praksi se varijable instance deklariraju unutar klasa, a izvan metoda. Obično se varijable instance deklariraju kao privatne tako da im se može pristupiti samo unutar klase u kojoj su deklarirane.
Što je lokalna varijabla?
Lokalne varijable su varijable koje imaju lokalni opseg i deklarirane su unutar određenog bloka koda. Lokalne varijable mogu se promatrati kao varijable koje koristi metoda za pohranjivanje svog privremenog stanja. Opseg lokalne varijable određen je pomoću lokacije na kojoj je varijabla deklarirana, a posebne ključne riječi se ne koriste u tu svrhu. Obično je pristup lokalnoj varijabli ograničen unutar bloka koda koji je deklariran (tj. između otvarajuće i završne zagrade tog bloka koda). Lokalne varijable obično se pohranjuju u stog poziva. To bi omogućilo rekurzivnim pozivima funkcija da zadrže vlastite kopije lokalnih varijabli koje će biti pohranjene u odvojenim memorijskim adresnim prostorima. Kada metoda završi svoje izvršenje, informacije o toj metodi iskaču iz poziva poziva, također uništavajući lokalne varijable koje su bile pohranjene.
Koja je razlika između varijable instance i lokalne varijable?
Varijable instance su deklarirane unutar klasa izvan metoda i one pohranjuju stanje objekta, dok su lokalne varijable deklarirane unutar blokova koda i koriste se za pohranjivanje stanja metode. Varijabla instance živa je sve dok je objekt koji sadrži tu varijablu živ, dok je lokalna varijabla živa tijekom izvođenja te metode/bloka koda. Varijabli instance (koja je deklarirana kao javna) može se pristupiti unutar klase, dok se lokalnoj varijabli može pristupiti samo unutar bloka koda u kojem je deklarirana. Upotreba varijabli instance ograničena je samo na objektno orijentirano programiranje, dok lokalne varijable nemaju takvo ograničenje.