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::count1que cada instância construída recebe um valor sequencial de count1antes de ser incrementada . Como numberé uma variável de instância, cada Requestobjeto contém seu próprio valor distinto; em contraste, há apenas um objeto Request::count1disponível para todas as instâncias com o mesmo valor.

Referências