Não, as variáveis e métodos staticos são inicializados com a classe, não com a instância da classe. No caso o construtor é chamado com uma instância da classe, então antes do construtor ser chamado o x será igual a 10;
As variáveis e métodos staticos, são executados na ordem que são criados, de cima para baixo.
A questão é sobre um variável estatica e um bloco estatico e o que acontece após o super
Creio que não tenho como ser mais claro
Mas desde já agradeço
romarcio
deyvid:
A questão é sobre um variável estatica e um bloco estatico e o que acontece após o super
Creio que não tenho como ser mais claro
Mas desde já agradeço
Isso eu já respondi pra ti, nada acontece. As variáveis estáticas e métodos estáticos são inicializados com a classe e não com a instância da classe. São sempre a primeira coisa a ser inicializada na construção da classe. Depois dos static’s, é que vai ser feita a chamada de um construtor por uma instância e nessa chamada será executado o super.
O exemplo postado pelo maior_abandonado é muito bom, mas além de static ele também colocou o que chamamos de bloco de instância(se não me engano) e esse bloco de instância é que será executado após um super.
maior_abandonado
deyvid:
A questão é sobre um variável estatica e um bloco estatico e o que acontece após o super
Creio que não tenho como ser mais claro
Mas desde já agradeço
eu sei, o exemplo que fiz foi para mostrar que os construtores são as ultimas coisas a executar neste exemplo…
inclusive se você tirar o main, primeiro carrega o conteúdo estático de ambas as classes depois da a exceção falando da falta do main (ao tentar executar a classe filho).
diegohsi
Exemplo
classPai{staticints=1;Pai(){System.out.println("Construtor Pai");}static{System.out.println("Bloco Statico da Classe Pai");}}publicclassFilhoextendsPai{static{System.out.println("Bloco Statico da Classe Filho");}publicstaticvoidmain(String[]args){newPai();}}
1. Quando vc der um new independente de ser em Pai ou em Filho, irá chamar o o contrutor da superClasse até a classe Objetc.
2. Antes de chamar á proxima linha após o super, todos os blocos static da super classe são chamados depois passado para as classes filhas até chegar a classe que chamou o primeiro contrutor.
3. Lembrando que se vc tiver um bloco estatico após o outro irá chamar na sequencia e depois passar pra proxima classe.
4. as variaveis static são carregadas antes de qualquer coisa são carregadas junto com a classe.
Sou novo por aqui, perdoe-me se estiver falando algo errado.