[RESOLVIDO] Metodos + Atributos static

Acabei de ver um exemplo no Deitel e fiquei confuso:

public class Empregado {

private String nome;
private static int count = 0;

Construtor() {
++count;
}

public static int getCount() {
return count
}

A classe original tem mais coisas, mas isso é o que interessa para a pergunta.

Teoricamente eu entendi, mas como outras coisas em java eu falho em entender a utilidade.
Eu preciso do getCount() pois a variável de instancia é privada, mas qual é a diferença entre ela (variável) ser static ou não no caso?
getCount() não retornaria o valor independente da variável de instancia ser estática?
Ou ele precisa que ela seja estática para o método ser estático?

Você está confundindo variável de instância (existe uma cópia dela para cada objeto) com variável estática ou variável de classe (existe apenas uma instância dela e está associada à classe).

Nesse caso, “count” é uma variável que foi inicializada com 0 (private static int count = 0) quando a classe foi carregada no programa, e a cada vez que se cria um novo empregado , essa contagem de empregados criados é incrementada.

Percebi agora que escrevi errado mesmo, variável de instancia é a do objeto criado.
Mas a dúvida persiste.
Do que eu entendi que você falou a diferença do static é que nesse caso por exemplo a variável nome cada instancia vai ter um, enquanto a count vai ser uma só independente de quantos empregados forem criados.

É isso?

:EDIT: muito obrigado entanglement!

Sim senhor, é isso mesmo, já que ela está amarrada “na classe”, não “na instância da classe” (objeto Empregado).

Uma forma de você perceber isso é você escrever um programa que cria 3 objetos do tipo Empregado. Você vai ver que “count” se mantém de uma criação para outra do objeto Empregado, o que não ocorre para a variável de instância “nome”.