Last Updated : 18 Oct, 2022
In a Java program, operations can be performed on methods, constructors, and initialization blocks. Instance Initialization Blocks or IIBs are used to initialize instance variables. So firstly, the constructor is invoked and the java compiler copies the instance initializer block in the constructor after the first statement super(). They run each time when the object of the class is created.
// 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();
}
}
IIB block Constructor Called
Multiple Instance Initialization Blocks in a Program
We can also have multiple IIBs in a single class. If the compiler finds multiple IIBs, then they all are executed from top to bottom i.e. the IIB which is written at the top will be executed first.
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();
}
}
IIB1 block IIB2 block IIB3 block Constructor Called
Instance Initialization Block with parent class
You can have IIBs in parent class also. Instance initialization block code runs immediately after the call to super() in a constructor. The compiler executes the parent's class's IIB before executing the current class's IIBs.
Have a look at the following example.
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();
}
}
B-IIB block B-Constructor Called A-IIB block A-Constructor Called
In the above example, the compiler tries to execute the class A constructor, when the object of class A is created. But it finds super() statement and goes to the parent class constructor first to be executed. The order of execution, in this case, will be as follows:
Important points:
Related Article :
The Initializer Block in Java
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4