Variável de Instância vs Variável Local
Uma variável de instância é um tipo de variável presente na programação orientada a objetos. É uma variável que é definida em uma classe e cada objeto dessa classe possui uma cópia separada dessa variável. Por outro lado, o uso de variáveis locais não se limita às linguagens de programação orientadas a objetos. É uma variável que pode ser avaliada apenas dentro de um bloco de código específico (por exemplo, função, bloco de loop, etc.) em que está definido. Por esse motivo, diz-se que as variáveis locais têm um escopo local.
O que é uma variável de instância?
As variáveis de instância são usadas na programação orientada a objetos para armazenar o estado de cada objeto em uma classe. Eles também são conhecidos como variáveis de membro ou variáveis de campo. Variáveis de instância são declaradas sem o uso da palavra-chave estática em Java. Os valores armazenados nas variáveis de instância são exclusivos para cada objeto (cada objeto possui uma cópia separada) e os valores armazenados nelas representam o estado desse objeto. O espaço para uma variável de instância é alocado no heap, quando esse objeto é alocado no heap. Portanto, as variáveis de instância são mantidas na memória enquanto o objeto estiver ativo. Por exemplo, a cor de um carro é independente da cor de outro carro. Portanto, a cor de um objeto de carro pode ser armazenada em uma variável de instância. Na prática, variáveis de instância são declaradas dentro de classes e métodos externos. Geralmente, as variáveis de instância são declaradas como privadas para que elas possam ser acessadas somente dentro da classe em que é declarada..
O que é uma variável local?
Variáveis locais são variáveis com escopo local e são declaradas em um bloco de código específico. Variáveis locais podem ser vistas como variáveis usadas por um método para armazenar seu estado temporário. O escopo de uma variável local é determinado usando o local em que a variável é declarada e palavras-chave especiais não são usadas para esse fim. Normalmente, o acesso a uma variável local é limitado dentro do bloco de código declarado (ou seja, entre as chaves de abertura e fechamento desse bloco de código). Variáveis locais são normalmente armazenadas na pilha de chamadas. Isso permitiria que chamadas de função recursivas mantivessem suas próprias cópias das variáveis locais para serem armazenadas em espaços de endereço de memória separados. Quando o método termina sua execução, as informações sobre esse método são exibidas na pilha de chamadas, destruindo também as variáveis locais que foram armazenadas.
Qual é a diferença entre Variável de Instância e Variável Local?
Variáveis de instância são declaradas dentro de classes fora dos métodos e armazenam o estado de um objeto, enquanto variáveis locais são declaradas dentro de blocos de código e são usadas para armazenar o estado de um método. Uma variável de instância permanece ativa enquanto o objeto que contém essa variável estiver ativa, enquanto uma variável local estiver ativa durante a execução desse método / bloco de código. Uma variável de instância (que é declarada pública) pode ser acessada dentro da classe, enquanto uma variável local pode ser acessada apenas dentro do bloco de código que é declarado. O uso de variáveis de instância é limitado apenas à programação orientada a objetos, enquanto as variáveis locais não têm essa limitação..