Bloco static

3 respostas
diego2005

Pessoal, será que alguém pode me explicar o que esse bloco static faz, e por que ele é válido??

class A
{
    A()
    {
          System.out.print("CA ");
    }
    
    static 
    {
          System.out.print("SA ");
     }
}

class B extends A 
{
    B() 
    {
          System.out.print("CB ");
     }

     static 
     {
          System.out.print("SB ");
     }  

     public static void main(String[] args)
     {
           new B();
     }
}

Nunca essa sintaxe....

3 Respostas

P

Sim o bloco estatico é valido e como um membro estatico pertence a classe e não ao objeto.

O bloco estatico é executado durante o carregamento da classe pelo classloader !

Alem de blocos estaticos vc pode ter “blocos de instancia”, o qual será sempre executado durante a criacao do objeto, antes do metodo construtor, por exemplo

class A
 {
     A()
     {
           System.out.print("CA ");
     }

     {
          //bloco de instancia
          System.out.println(" - GUJ - ");
     }
}
esb

Fala diego2005,

Os blocos estáticos são executados apenas na primeira vez que as classes são carregadas na memória e não podem ser herdados.

Veja o essa explicação no jGuru

[]s
Eduardo

Alexandre_Henrique

Um bloco estático é executado somente uma vez, imediatamente após a primeira referencia a classe, isto é, no carregamento da memória.

Como o bloco de código estático é executado no carregamento da classe, consequentemente será executado antes da chamada ao construtor da classe.
Dentro de um bloco de código estático poderemos acessar somente atributos e métodos estáticos.

Criado 16 de agosto de 2006
Ultima resposta 8 de mar. de 2009
Respostas 3
Participantes 4