Bloque de inicialización de instancias (IIB) en Java

En un programa Java, las operaciones se pueden realizar en métodos, constructores y bloques de inicialización. Los bloques de inicialización de instancia o IIB se utilizan para inicializar variables de instancia. Entonces, en primer lugar, se invoca al constructor y el compilador de Java copia el bloque inicializador de la instancia en el constructor después de la primera instrucción super(). Se ejecutan cada vez que se crea el objeto de la clase. 
 

  • Los bloques de inicialización se ejecutan cada vez que se inicializa la clase y antes de que se invoquen los constructores.
  • Por lo general, se colocan sobre los constructores entre llaves.
  • No es en absoluto necesario incluirlos en tus clases.

Java

// Java program to illustrate
// Instance Initialization Block
class GfG {
    // Instance Initialization Block
    {
        System.out.println("IIB block");
    }
 
    // Constructor of GfG class
    GfG() { System.out.println("Constructor Called"); }
    public static void main(String[] args)
    {
        GfG a = new GfG();
    }
}
Producción

IIB block
Constructor Called

Bloques de inicialización de múltiples instancias en un programa

También podemos tener varios IIB en una sola clase. Si el compilador encuentra varios IIB, todos se ejecutan de arriba hacia abajo, es decir, el IIB que está escrito en la parte superior se ejecutará primero. 

Java

// Java program to illustrate
// execution of multiple
// Instance Initialization Blocks
// in one program
class GfG {
    // Instance Initialization Block - 1
    {
        System.out.println("IIB1 block");
    }
 
    // Instance Initialization Block - 2
    {
        System.out.println("IIB2 block");
    }
 
    // Constructor of class GfG
    GfG() { System.out.println("Constructor Called"); }
 
    // Instance Initialization Block - 3
    {
        System.out.println("IIB3 block");
    }
 
    // main function
    public static void main(String[] args)
    {
        GfG a = new GfG();
    }
}
Producción

IIB1 block
IIB2 block
IIB3 block
Constructor Called

Bloque de inicialización de instancia con clase principal

También puede tener IIB en la clase de padres. El código del bloque de inicialización de la instancia se ejecuta inmediatamente después de la llamada a super() en un constructor. El compilador ejecuta el IIB de la clase principal antes de ejecutar el IIB de la clase actual. 

Echa un vistazo al siguiente ejemplo.  

Java

// Java program to illustrate
// Instance Initialization Block
// with super()
 
// Parent Class
class B {
    B() { System.out.println("B-Constructor Called"); }
 
    {
        System.out.println("B-IIB block");
    }
}
 
// Child class
class A extends B {
    A()
    {
        super();
        System.out.println("A-Constructor Called");
    }
    {
        System.out.println("A-IIB block");
    }
 
    // main function
    public static void main(String[] args)
    {
        A a = new A();
    }
}
Producción

B-IIB block
B-Constructor Called
A-IIB block
A-Constructor Called

En el ejemplo anterior, el compilador intenta ejecutar el constructor de la clase A, cuando se crea el objeto de la clase A. Pero encuentra la instrucción super() y va primero al constructor de la clase principal para ejecutarse. El orden de ejecución, en este caso, será el siguiente: 

  1. Bloque de inicialización de instancias de la superclase. 
  2. Constructores de la superclase. 
  3. Bloques de inicialización de instancias de la clase. 
  4. Constructores de la clase.

Puntos importantes:  

  • Los bloques de inicialización de instancias se ejecutan cada vez que se crea una nueva instancia.
  • Los bloques de inicialización se ejecutan en el orden en que aparecen en el programa
  • El bloque de inicialización de instancia se invoca después de que se invoca el constructor de la clase principal (es decir, después de la llamada al constructor super())

Artículo relacionado:  
El bloque inicializador en Java
Este artículo es una contribución de Vishal Garg . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *