Esse artigo Java mostra o uso das variáveis do tipo static, artifício muito usado para manter o controle sobre todos os objetos de uma mesma classe, por exemplo.
O que é static em Java
Quando definimos uma classe e criamos vários objetos dela, já sabemos que cada objeto irá ser uma cópia fiel da classe, porém com suas próprias variáveis e métodos em lugares distintos da memória.
Ou seja, o objeto 'fusca' tem suas variáveis próprias, diferentes do objeto 'ferrari', embora ambos tenham o mesmo 'modelo', que é a classe 'Carro'.
Quando definimos variáveis com a palavra static em uma classe ela terá um comportamento especial: ela será a mesma para todos os objetos daquela classe.
Ou seja, não haverá um tipo dela em cada objeto. Todos os objetos, ao acessarem e modificarem essa variável, acessarão a mesma variável, o mesmo espaço da memória, e a mudança poderá ser vista em todos os objetos.
Como declarar uma variável static em Java
Basta colocar a palavra static antes do tipo:static tipo nomeDaVariavel
Em uma classe:
private static int vendidos;
public static int totalAlunos;
Quando usar variáveis static em Java
Principalmente quando você quiser ter um controle sobre os objetos ou quando todos os objetos devem partilhar uma informação (evitar ter que fazer Composição ou chamar métodos de outros objetos).- Exemplo 1: Para controle de número total de objetos
Cada um que vende, é um comprador diferente, dados diferentes etc. Portanto, cada carro será um objeto.
Você cria a variável estática 'total', e no construtor a incrementa (total++). Pronto, saberá quantos carros foram vendidos, automaticamente.
Um exemplo parecido, seria para um aplicativo de uma escola ou empresa, para controle de quantos funcionários existem na empresa, ou em cada setor dela.
- Exemplo 2: Para compartilhar uma informação
Por exemplo, em um jogo de futebol, quando você joga contra o computador.
A máquina tem uma estratégia diferente dependendo do time que você escolher, do modo que você jogar, depende do número de jogadores dele e seu também.
E como saber o número atual de jogadores do time deles?
Ora, um método static. Pois todos os jogadores são objetos de uma mesma classe.
Em um jogo de luta, se existirem 3 inimigos contra 2 personagens seus. Provavelmente o computador vai te atacar.
Mas se você matar dois deles, eles estarão em desvantagem. Existe então um método que faz com que os inimigos corram, caso o número de jogadores dele seja menor que o seu.
Para obter essa informação, os objetos devem partilhar da informação: número de personagens vivos.
Exemplo de código com static
O seguinte código cria uma classe bem simples, a "Carro" que simplesmente informa quando o objeto é criado - através do método construtor padrão main - e incrementa a variável 'total', que vai guardar a informação do número total de objetos/carros criados em sua aplicação.staticTest.java
public class staticTest {
public static void main(String[] args) {
Carro fusca = new Carro();
Carro ferrari = new Carro();
Carro jipe = new Carro();
}
}
Carro.java
public class Carro {
public static int total=0;
Carro(){
total++;
System.out.println("Objeto criado. Existem "+total+" objetos dessa classe");
}
}
11 comentários:
Nó cara, valeuuu, estava a diar tentando incrementar. muito obrigado!!!
Ficou bem claro. Meus parabéns.
Carro(){
total++;
System.out.println("objeto criado. existem\n" + total + "\nda mesma classe");
}
}
fiz dessa forma ficou com melhor visualização.
Ótima explicação!
Olá, primeiramente parabéns pelo projeto, sinceramente até agora é o melhor curso de java que já vi entre vários que já estudei e esse curso é top dentre muitos outros.
Agora vamos lá: fiz esse algoritmo aqui e funcionou certinho, porém não entendi nesse exemplo o porquê que na class Carro ao criar a variável static int total já atribui logo um valor que foi 0 (zero), sendo que até antes desse exemplo para atribui um valor numa class devemos criar um construtor para as variaveis internamente.
Não entendia como podia ser util. Obrigado
Muito obrigado ajudou bastante!!!
Desta forma podemos ter controle em uma variável static sendo acessada por todos os objetos.
Você atribuir um valor inicial direito na variável ou através do construtor é opcional, pois o efeito é o mesmo
Atribuir um valor de inicialização diretamente na variável ou através do construtor é opcional,pois o efeito é o mesmo.
Esse métodos static são herdados e acessados da mesma forma com os objetos filhos?
Valeu...ótima explicação, avançando mais ainda em Java.
Postar um comentário