Inicialización para la ejecución del bloque, el bloque constructor de inicialización estática

empaquetar com.ocr;

clase A {
     estática {
        System.out.println ( "Static init A." );
    }

    {
        System.out.println ( "Instancia init A." );
    }

    UNA() {
        System.out.println ( "Constructor A." );
    }
}

clase B se extiende A {
     estática {
        System.out.println ( "Static init B." );
    }

    {
        System.out.println ( "Instancia init B." );
    }

    B () {
        System.out.println ( "Constructor B." );
    }
}

clase C se extiende B {

    estática {
        System.out.println ( "Static init C." );
    }

    {
        System.out.println ( "Instancia init C." );
    }

    C() {
        System.out.println ( "Constructor C." );
    }
}

público  de clase principal {

    estática {
        System.out.println ( "Static init principal." );
    }

    {
        System.out.println ( "init Instancia principal." );
    }

    pública Principal () {
        System.out.println ( "Constructor principal." );
    }

    pública  estática  vacíos principales (args String []) {
        C c = nuevo C ();
        // B b = new B (); 
    }
}

los resultados

Estática init principal.
Estática init A.
Estática init B.
Estático init C.
Instancia init A.
Constructor A.
Instancia init B.
Constructor B.
Instancia init C.
Constructor C.

Conclusión: bloque estático de código en preferencia a decir que no hay un bloque de ejecución de código, y se ejecuta desde la parte superior de los padres

Constructor> subclase - matriz bloque estático de clase de código -> bloque estático subclase de código -> bloques de código constructor de la clase padre -> constructor de la clase padre -> bloque de código subclase configurados: Secuencia

 

Supongo que te gusta

Origin www.cnblogs.com/xyzxy/p/12592250.html
Recomendado
Clasificación