Variable d'instància vs variable local
Una variable d'instància és un tipus de variable que està present en la programació orientada a objectes. És una variable que es defineix en una classe i cada objecte d'aquesta classe conté una còpia separada d'aquesta variable. D' altra banda, l'ús de variables locals no es limita als llenguatges de programació orientats a objectes. És una variable que només es pot avaluar dins d'un bloc de codi concret (per exemple, funció, bloc de bucle, etc.) en què es defineix. Per aquest motiu, es diu que les variables locals tenen un abast local.
Què és una variable d'instància?
Les variables d'instància s'utilitzen en la programació orientada a objectes per emmagatzemar l'estat de cada objecte en una classe. També es coneixen com a variables membres o variables de camp. Les variables d'instància es declaren sense utilitzar la paraula clau estàtica a Java. Els valors emmagatzemats a les variables d'instància són únics per a cada objecte (cada objecte té una còpia separada) i els valors emmagatzemats en elles representen l'estat d'aquest objecte. L'espai per a una variable d'instància s'assigna a la pila, quan aquest objecte s'assigna a la pila. Per tant, les variables d'instància es mantenen a la memòria mentre l'objecte estigui viu. Per exemple, el color d'un cotxe és independent del color d'un altre cotxe. Així, el color d'un objecte cotxe es pot emmagatzemar en una variable d'instància. A la pràctica, les variables d'instància es declaren dins de les classes i fora dels mètodes. Normalment, les variables d'instància es declaren com a privades de manera que només es pot accedir a elles dins de la classe a la qual es declara.
Què és una variable local?
Les variables locals són variables que tenen un àmbit local i es declaren dins d'un bloc de codi específic. Les variables locals es poden veure com variables que s'utilitzen per un mètode per emmagatzemar el seu estat temporal. L'abast d'una variable local es determina utilitzant la ubicació on es declara la variable i no s'utilitzen paraules clau especials per a aquest propòsit. Normalment, l'accés a una variable local està limitat dins del bloc de codi que es declara (és a dir, entre les claus d'obertura i tancament d'aquest bloc de codi). Les variables locals s'emmagatzemen normalment a la pila de trucades. Això permetria que les trucades de funcions recursives mantinguessin les seves pròpies còpies de les variables locals que s'emmagatzemen en espais d'adreces de memòria separats. Quan el mètode acaba d'executar-se, la informació sobre aquest mètode surt de la pila de trucades, destruint també les variables locals que s'emmagatzemaven.
Quina diferència hi ha entre la variable d'instància i la variable local?
Les variables d'instància es declaren dins de classes fora dels mètodes i emmagatzemen l'estat d'un objecte, mentre que les variables locals es declaren dins de blocs de codi i s'utilitzen per emmagatzemar l'estat d'un mètode. Una variable d'instància està activa mentre l'objecte que la conté, mentre que una variable local està activa durant l'execució d'aquest mètode/bloc de codi. Es pot accedir a una variable d'instància (que es declara pública) dins de la classe, mentre que només es pot accedir a una variable local dins del bloc de codi que es declara. L'ús de variables d'instància només es limita a la programació orientada a objectes, mentre que les variables locals no tenen aquesta limitació.