c.a(); //a //tipo a,método da superclasse é chamado primeiro
Tô certo?
L
leo.dep
imprime:
a b a b a…
jordy
a
b
a
b
a
danieldestro
Bom, mas isso só ocorre pq é static né?!?!?
Pq com instâncias da classe ele chama o método de B no final.
ricardolecheta
exato, métodos static pertencem a classe e não a instância.
danieldestro
Esse é o tipo de coisa que se esquece depois que se faz a prova de certificação.
Hoje, no Sun Tech Days, teve o Programming Puzzle em Java, as famosas pegadinhas da linguagem.
Só acertei uma, de 8 mostradas.
What a shame!
Ironlynx
Realmente a certificação muitas vezes só serve para dizer q vc conhece a linguagem…tem coisas incríveis…
Uma simples e fácil(só para reforçar):
public class Java{
static {
System.exit(1); }
}
Compila?Não Compila?Reclamará a ausência do método main()?Diga o PORQUE da resposta.
L
leo.dep
pra mim esse codigo compila…
e reclamara a ausencia do metodo main se vc tentar executar a classe , pois o compilador procura a assinatura do main quando é executado…
cv1
Compila e roda
O compilador nao procura nenhum metodo main na sua classe - quem faz isso eh a jvm, leo… mas o que acontece eh que antes de procurar um metodo main, a vm precisa carregar a classe: tcharam! quando ela carrega a classe, o metodo estatico eh executado, e a vm eh convenientemente informada de que ela tem que morrer antes mesmo de levantar da cama
Ironlynx
Exato,cv o bloco estático é executado primeiro pelo carregador de classe,e antes q ele possa chegar a presença do método Main a chamada
a System.exit termina a execução de forma abrupta…Qdo alguém quiser
ver direito o q ocorre troque esse System.exit por System.out.println… aí,reclamará a ausência do main()…