Što je varijabla instance?

Varijabla instance je dio podataka u objektno orijentiranom programiranju koji ima svoju jedinstvenu vrijednost za svaki objekt u kojem se nalazi. Varijable instance se također mogu zvati članovi instance, nestatična polja i članovi podataka. Oni su važan dio većine objekata i sadrže specifične dijelove podataka koje objekt koristi za izračun.
Na primjer, ako postoje dva objekta, A i B, gdje objekt A ima varijablu instance koja se zove “bla”, a objekt B također ima varijablu instance koja se zove “bla”, dvije “bla” varijable su različiti entiteti. Svaka varijabla je pridružena objektu koji je enkapsulira. Puni naziv varijable “blah” pridružene objektu A je “A.blah”, dok je puni naziv varijable “blah” pridružene objektu B “B.blah”. Svaka ako te varijable može imati svoju vrijednost. Ako su objekti A i B istog tipa i stvoren je drugi objekt te vrste, C, a objekt C će također imati varijablu instance “bla”, koja može imati svoju jedinstvenu vrijednost.

Varijable instance često se brkaju sa statičkim varijablama, ali se te dvije značajno razlikuju. Za razliku od varijabli instance, od kojih svaki objekt određenog tipa ima svoju, statičke varijable imaju samo jednu vrijednost, a ta je vrijednost ista za svaki objekt odgovarajućeg tipa. Statičke varijable često se nazivaju varijablama klase, koje nisu isto što i varijable instance.

Ovisno o svojstvima vidljivosti koja su im dodijeljena, varijable instance mogu biti vidljive samo unutar određenog objekta, objektu i njegovim podklasama ili objektu u kojem se nalaze, kao i svim drugim objektima. Taj konačni tip vidljivosti, nazvan javna vidljivost, često se smatra lošom praksom, na primjer varijablama, jer je lako narušiti principe enkapsulacije u objektno orijentiranom programiranju. Unatoč ovom tabuu, postoje slučajevi u kojima su varijable javne instance korisne. Na primjer, mnoge standardne klase u Javi imaju javne varijable instance, što ponekad omogućuje jednostavnu izmjenu svojstava.

Vidljivost varijable instance također dolazi u igru ​​s nasljeđivanjem. Ako jedna klasa nasljeđuje drugu, to objema klasama ne daje odmah pristup varijablama instance jedne druge. Privatne varijable instance u nadklasi i podklasi ostaju ograničene samo na te klase, tako da privatna varijabla u podklasi ne može biti vidljiva od strane nadklase, i obrnuto. Jedine varijable instance koje i nadklasa i podklasa mogu vidjeti su zaštićene varijable u nadklasi.