Skip to main content

O que é uma variável de instância?

Uma variável de instância é um dado na programação orientada a objetos que possui seu próprio valor exclusivo para cada objeto em que reside. As variáveis ​​de instância também podem ser chamadas de membros da instância, campos não estáticos e membros de dados. Eles são uma parte importante da maioria dos objetos, mantendo partes específicas de dados que o objeto usa para o cálculo.

Por exemplo, se houver dois objetos, A e B, em que o objeto A possui uma variável de instância chamada "blá" e o objeto B também possui uma variável de instância chamada "blá", as duas variáveis ​​"blá" são entidades distintas. Cada variável está associada ao objeto que a encapsula. O nome completo da variável "blá" associado ao objeto A é "A.blah", enquanto o nome completo da variável "blá" associado ao objeto B é "B.blah". Cada uma dessas variáveis ​​pode ter seu próprio valor. Se os objetos A e B forem do mesmo tipo, e outro objeto desse tipo, C, for criado, e o objeto C também terá uma variável de instância "blah", que pode ter seu próprio valor exclusivo.

Variáveis ​​de instância geralmente são confundidas com variáveis ​​estáticas, mas as duas são significativamente diferentes. Ao contrário das variáveis ​​de instância, das quais todos os objetos de um tipo específico têm suas próprias, as variáveis ​​estáticas têm apenas um valor e esse valor é o mesmo para todos os objetos do tipo apropriado. Variáveis ​​estáticas são freqüentemente chamadas de variáveis ​​de classe, que não são iguais às variáveis ​​de instância.

Dependendo das propriedades de visibilidade atribuídas a eles, as variáveis ​​de instância podem ser visíveis apenas dentro de um objeto específico, para um objeto e suas subclasses ou para o objeto em que ele reside, bem como quaisquer outros objetos. Esse tipo final de visibilidade, chamado visibilidade pública, geralmente é considerado uma prática ruim para variáveis ​​de instância, porque é fácil violar os princípios de encapsulamento na programação orientada a objetos. Apesar desse tabu, há momentos em que variáveis ​​de instância pública são úteis. Por exemplo, muitas classes padrão em Java possuem variáveis ​​de instância pública, o que às vezes permite fácil modificação de propriedades.

A visibilidade de uma variável de instância também entra em jogo com herança. Se uma classe herda de outra, isso não dá imediatamente a ambas as classes acesso às variáveis ​​de instância uma da outra. As variáveis ​​de instância privada na superclasse e subclasse permanecem restritas apenas a essas classes, portanto, uma variável privada na subclasse não pode ser vista pela superclasse e vice-versa. As únicas variáveis ​​de instância que a superclasse e a subclasse podem ver são variáveis ​​protegidas na superclasse.