sephct:
Galera, estava com um problema com o bendito static, resolver ele eu consegui, fui mudando aqui e ali até que parou de dar erro, mas o porque que parou eu nao entendo.
O conceito de static ainda é um pouco vago pra mim(pra nao dizer que nisso estou totalmente perdido), ja li o tutorial da galera aqui do forum, porém as duvidas ainda ficam.
Quando e porque usar o maldito do static? Como acessar algo que é static ou que nao é static?
A parte de singleton eu até entendo, mas nao entendo a sua relação com static e pq todos dizem que eles são relacionados.
Para entender static vc precisa entender o conceito de classe vs objecto.
Classes são difinições só existe uma única classe por classloader com um dado nome.
Essa classe é um dicionário de metadados de objetos. Ela contém toda a estrutura para que o objeto seja criado, mas ela não o cria (que o cria é o classloader). Ora bem, os objetos são criados a partir de um template que é a classe. Eles sempre são associados a uma ,e a uma só, classe. Vc pode saber qual é com o método getClass presente em todos os objetos.
Agora, entenda que a classe em si mesma tb é um objecto. ( do tipo Class)
Se a classe tb é um objeto (embora de um tipo diferente ) eu posso ter métodos nela.
Para destinguir quais métodos são do objeto e quais são da classe utiliza-se o static (estático).
O conceito é que os objetos são criados dinamicamente conforme se vai dando new, mas a classe é imutável (estática)
Portanto, atributos e métodos static pertencem à classe, enquanto os outros petencem ao objeto.
Isso implica em muitas coisas. Por exemplo, o objecto pode acessar tudo o que é da classe, mas a classe não pode acessar o que é do objeto. (escopo diferente) Por isso não pode ser usado ‘this’ em métodos static.