Press enter to see results or esc to cancel.

Variáveis de Instância e de Classe na linguagem Java

As variáveis de instância têm comportamento muito diferente das variáveis de classe. Hoje, veremos quais são essas diferenças e qual a melhor forma de utilizar uma variável de classe.

Variáveis de instância

Vamos definir uma classe Quadrado que contém uma variável de instância: cor.

public class Quadrado {
	public String cor = "Azul";
}

Observe que todo objeto do tipo Quadrado que será instanciado terá a sua variável cor inicializada com o valor “Azul”. Para saber mais sobre a inicialização na linguagem Java veja este post aqui.

Toda classe serve como uma “Planta baixa” ou um “Projeto” para a criação de um objeto. É na classe que ficam descritas todas as propriedades e comportamentos de um objeto. Assim, quando criamos um novo objeto do tipo Quadrado, temos a certeza de que esse objeto criado contém uma variável de instância chamada cor com o valor “Azul”.

Observe o código para criar um novo objeto do tipo Quadrado e a ilustração a seguir:

Quadrado q1 = new Quadrado();

1

Vamos criar mais um objeto do tipo Quadrado:

Quadrado q2 = new Quadrado();

2

A partir deste momento, temos dois objetos do tipo Quadrado. Cada um deles tem a sua própria variável de instância chamada cor. Ao realizar uma alteração na variável do objeto q1, a variável do objeto q2 não será alterada.

q1.cor = "Verde";

3

Uma variável de instância pertence ao objeto criado e somente a esse objeto. Uma alteração em uma variável de instância não tem efeito algum sobre as outras variáveis de instância dos outros objetos do mesmo tipo.

A variável de classe tem o comportamento oposto ao da variável de instância.

Variáveis de Classe

Vamos transformar a variável de instância cor em uma variável de classe. Faremos isso com o uso da palavra reservada static. Veja a definição da classe Quadrado com a variável de classe:

public class Quadrado {
	public static String cor = "Azul";
}

Agora, a variável cor pertence à classe e não mais aos objetos instanciados. Vamos criar dois objetos do tipo Quadrado para percebermos a diferença de comportamento:

Quadrado q1 = new Quadrado();
Quadrado q2 = new Quadrado();

4

Neste momento, temos dois objetos do tipo Quadrado: q1 e q2. Agora, como a variável cor é uma variável de classe, ao mudar a variável do objeto q1 a variável do objeto q2 também será alterada. Veja:

q1.cor = "Verde";

5

Qualquer alteração na variável de classe cor no objeto q2 também terá efeito na variável de classe do objeto q1:

q2.cor = "Amarelo";

6

Perceba que qualquer alteração em uma variável de classe tem impacto em todos os objetos que são da mesma classe. Por isso, quando formos trabalhar com variáveis de classe, o mais aconselhável é fazer a alteração na própria classe. Desta forma:

Quadrado.cor = "Vermelho";

7


 

 

Experimente executar os códigos abaixo no seu computador e observe as saídas.

public class Quadrado {
	public String cor = "Azul";

	public static void main(String[] args) {
		Quadrado q1 = new Quadrado();
		Quadrado q2 = new Quadrado();
		System.out.println("q1.cor: " + q1.cor + " q2.cor: " + q2.cor);
		q1.cor = "Verde";
		System.out.println("q1.cor: " + q1.cor + " q2.cor: " + q2.cor);
		q2.cor = "Amarelo";
		System.out.println("q1.cor: " + q1.cor + " q2.cor: " + q2.cor);
	}
}
public class Quadrado {
	public static String cor = "Azul";

	public static void main(String[] args) {
		Quadrado q1 = new Quadrado();
		Quadrado q2 = new Quadrado();
		System.out.println("q1.cor: " + q1.cor + " q2.cor: " + q2.cor
				+ " Quadrado.cor: " + Quadrado.cor);
		q1.cor = "Verde";
		System.out.println("q1.cor: " + q1.cor + " q2.cor: " + q2.cor
				+ " Quadrado.cor: " + Quadrado.cor);
		q2.cor = "Amarelo";
		System.out.println("q1.cor: " + q1.cor + " q2.cor: " + q2.cor
				+ " Quadrado.cor: " + Quadrado.cor);
		Quadrado.cor = "Vermelho";
		System.out.println("q1.cor: " + q1.cor + " q2.cor: " + q2.cor
				+ " Quadrado.cor: " + Quadrado.cor);
	}
}
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone
Comments

4 Comments

ALMIR SAMPAIO SILVA - T3 - AVA4 - S12

E um Bom Progama quero ser duns aprendizado com grande desenvolvimento..
Agradesso o espaço que os senhores me tem ofericido e me propricionado mais sabedoria..

Mauro

Excelente. Obrigado

John

Muito bom! Obrigado.

Eduardo Rocha

Ficou mto classo, obrigado !


Leave a Comment