Qual é a diferença entre Instância e variáveis ​​estáticas com um exemplo apropriado (programa)?


resposta 1:

Todos deram bons exemplos e explicações. Vou continuar com um:

A variável de instância é propriedade de cada objeto (instância) de uma classe.

A variável estática é propriedade da própria classe e não pertence a nenhum objeto específico (instância) dessa classe.

Comparando e contrastando:

  1. Variáveis ​​estáticas são inicializadas no momento do carregamento da classe. A variável estática pode ser acessada usando o nome da classe. Por exemplo, o objeto variável deve ser criado e pode ser acessado somente através do objeto. exemplo

sintaxe pode diferir de idioma para idioma

Class_A :: staticVariable // pode ser acessado

ObjClass_A = nova Classe_A

ObjClass_A.instanceVariable

3. A variável estática pode ser inicializada uma vez. Portanto, é um conceito central no padrão singleton.

4. A variável estática não pode fazer parte da interface da classe abstrata, pois a memória não é alocada para elas.



resposta 2:

A variável de instância é propriedade de cada objeto (instância) de uma classe.

A variável estática é propriedade da própria classe e não pertence a nenhum objeto específico (instância) dessa classe.

-

Exemplo:

classe Employee {
private static int employeeCount = 0;
private String empName;
private int empId;

//construtor
Funcionário público (String eName, int eId) {
this.empName = eName;
this.empId = eId;
employeeCount ++;
}

funcionário público addEmployee (String eName, int eId) {
retornar novo funcionário (eName, eId);
}

public void deleteEmployee (int eId) {
employeeCount--;
}

public int getEmployeeCount () {
return employeeCount;
}
}

Neste exemplo simples employeeCount é uma variável estática que fornece a contagem atual de funcionários; a contagem de funcionários aumenta ou diminui apenas se adicionarmos ou excluirmos um funcionário.

O empName e empId são variáveis ​​de instância, pois são anexados aos objetos do funcionário e, de preferência, serão diferentes para cada objeto.

Portanto, as variáveis ​​comuns a todos os objetos precisam ser variáveis ​​estáticas; caso contrário, faça disso uma variável de instância.



resposta 3:

A variável de instância é uma variável de membro definida na classe e cada instância (objeto dessa classe) possui uma cópia separada dela. Isso permanece na memória enquanto o objeto existir.

Teste de classe
{
String abc;
}

Para acessar o acima, você precisa instanciar a classe Test

Teste t = novo teste ();
t.abc = "Olá, mundo".
Teste t1 = novo Teste ();
t1.abc = "Bem-vindo"
Teste t2 = novo teste ();
t2.abc = "Teste";

Agora, se você vir o exemplo acima, temos três objetos da classe Test, t, t1 e t2, cada um com sua própria cópia da variável de instância abc e armazenada em diferentes locais de memória.

Por outro lado, a variável estática está associada a uma classe do que a um objeto. Eles têm um local fixo na memória e é referenciado usando o nome da classe.

Teste de classe
{
String abc;
static int count = 0;
}

Agora, para acessar a variável de contagem, você não precisa instanciar Teste. Você pode acessá-lo simplesmente como

Test.count = 1;

Geralmente, as variáveis ​​estáticas são usadas, se você desejar



resposta 4:

Você pode pesquisar no Google esse tipo de pergunta para obter mais detalhes e código de exemplo

Variável de Instância - Uma variável que é declarada dentro da classe, mas fora do método, é chamada de variável de instância. Não é declarado como estático.

Variável estática - Uma variável declarada como estática é chamada de variável estática. Não pode ser local, não é para nenhum objeto particulado, mas para toda a classe

classe Teste {
int iv = 10; // variável de instância
static int sv = 100; // variável estática
método void () {
int lv = 50; // variável local
}}

Para obter mais detalhes, consulte Java Variable Types