Variável de instância - Instance variable
Na programação orientada a objetos com classes , uma variável de instância é uma variável definida em uma classe (ou seja, uma variável de membro ), para a qual cada objeto instanciado da classe tem uma cópia separada, ou instância. Uma variável de instância tem semelhanças com uma variável de classe , mas não é estática. Uma variável de instância é uma variável que é declarada em uma classe, mas fora dos construtores, métodos ou blocos. Variáveis de instância são criadas quando um objeto é instanciado e são acessíveis a todos os construtores, métodos ou blocos da classe. Modificadores de acesso podem ser dados à variável de instância.
Uma variável de instância não é uma variável de classe, embora haja semelhanças. É um tipo de atributo de classe (ou propriedade de classe, campo ou membro de dados). A mesma dicotomia entre instância e membros de classe também se aplica a métodos ("funções de membro"); uma classe pode ter métodos de instância e métodos de classe .
Cada variável de instância vive na memória durante a vida do objeto ao qual pertence.
Variáveis são propriedades que um objeto conhece sobre si mesmo. Todas as instâncias de um objeto têm suas próprias cópias de variáveis de instância, mesmo se o valor for o mesmo de um objeto para outro. Uma instância de objeto pode alterar os valores de suas variáveis de instância sem afetar todas as outras instâncias. Variáveis de instância podem ser usadas por todos os métodos de uma classe, a menos que o método seja declarado como estático.
Exemplo
struct Request {
static int count1; // variable name is not important
int number;
Request() {
number = count1; // modifies the instance variable "this->number"
++count1; // modifies the class variable "Request::count1"
}
};
int Request::count1 = 0;
Neste exemplo C ++, a variável de instância Request::number
é uma cópia da variável de classe em Request::count1
que cada instância construída recebe um valor sequencial de count1
antes de ser incrementada . Como number
é uma variável de instância, cada Request
objeto contém seu próprio valor distinto; em contraste, há apenas um objeto Request::count1
disponível para todas as instâncias com o mesmo valor.