Conceito Bloco Static e Constructor  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
nandobgi
Java Ninja
[Avatar]

Membro desde: 27/03/2006 07:27:06
Mensagens: 282
Localização: Sampa
Offline

Boa tarde Pessoal

Gostaria de tirar uma dúvida no seguinte código abaixo


1. SuperClasse:



2. SubClasse:



Bem a minha dúvida é o seguinte, sei que quando instancio um objeto de uma subclasse o construtor da superClasse é chamada primeiro e assim sucessivamente até o topo da hierarquia, sei também que um bloco static e sempre executado antes da criação do objeto.
O código acima exibe primeiro as instruções do bloco static da superClasse em seguida o bloco static da subclasse só depois as instruções contidas nos construtores. Não entendi como a VM entendi que existe um bloco static em uma classe acima.


Obrigado.



[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Como assim "entende"?
Quando a JVM carrega uma classe, ela é obrigada a carregar também tudo que ela referencia, por exemplo, sua superclasse.



[WWW]
albiere
JavaChild

Membro desde: 08/08/2006 09:23:04
Mensagens: 134
Localização: São Paulo - SP
Offline

Naum deu pra entender sua pergunta direito naum cara...
como assim entende??? ela foi criada assim... rs

"Java and Ruby!"
nandobgi
Java Ninja
[Avatar]

Membro desde: 27/03/2006 07:27:06
Mensagens: 282
Localização: Sampa
Offline

Desculpe não ficou muito claro.

Seguinte sempre que eu tiver um bloco static em um superclasse esse vai ser executado antes de qualquer coisa? Mesmo antes dos construtores das Subclasses?

Obrigado


[MSN]
bbviana
JavaChild
[Avatar]

Membro desde: 24/07/2006 13:11:57
Mensagens: 111
Localização: São Paulo
Offline

Entao, vc precisa diferenciar o conceito de carregar uma classe e instanciar uma classe.
Carregar uma classe é carrega-la pra memoria (O ClassLoader do java faz isso) ao passo q instanciar uma classe é usar o operador "new".

Os construtores soh sao chamados qdo vc usa o "new", nunca em outra ocasião.
Os blocos static sao executados qdo sua classe é carregada pelo Java. E isso só ocorre uma vez.
Faça o teste: de varios new na sua classe e vc vai ver q o bloco static soh eh executado uma vez, ao passo q os construtores nao.

Respondendo a sua pergunta: sim, os blocos static sao sempre executados antes dos construtores.
rissato
JavaEvangelist
[Avatar]

Membro desde: 16/05/2006 22:07:12
Mensagens: 446
Localização: Uberlândia
Offline

ela não entende, ela simplismente vê e executa... (oO)

Quer vc pense que é capaz ou não, vc está certo!

Sun Certified Java Programmer 6.0
[MSN] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team