terça-feira, 23 de março de 2010

[Java] Comparar métodos estáticos e de objeto


Métodos estaticos

Como já foi abordado neste post, a palavra-chave static faz com que os valores e operações feitas sejam compartilhado entre todas as instâncias. Métodos e variáveis não declarados como static, a cada nova instancia seria uma nova variável onde o valor/operações de uma instancia não iria interferir na outra. Nada melhor que um exemplo para entender melhor o que foi dito. O exemplo abaixo mostra tudo isso que foi dito.

class Classe1 {

public static int contStat = 0;
public int cont = 0;

public Classe1() {}

public static void incrContStat() {
contStat++;
System.out.println("contStat agora é "+ contStat);
}

public void incrCont() {
cont++;
System.out.println("cont agora é "+ cont);
}
}

public class TestaStatic {
public static void main(String args[]) {
Classe1 c1 = new Classe1();
c1.incrContStat();
c1.incrCont();

Classe1 c2 = new Classe1();
c2.incrContStat();
c2.incrCont();

Classe1 c3 = new Classe1();
c3.incrContStat();
c3.incrCont();

Classe1 c4 = new Classe1();
c4.incrContStat();
c4.incrCont();
}
}
A execução deste exemplo resulta em:

contStat agora é 1
cont agora é 1
contStat agora é 2
cont agora é 1
contStat agora é 3
cont agora é 1
contStat agora é 4
cont agora é 1


Além disso, métodos estáticos como dito no post anterior, não necessitam da criação de objetos para a chamada deste métodos, mesmo quando em classe diferente do método que o chama. Podem, desta forma, serem acessados diretamente.

Métodos de objeto

Métodos de objetos são aqueles não declarados como static. Para o acesso deste métodos é necessária a chamada através de um objeto como já explicado anteriormente.

Nenhum comentário:

Postar um comentário