Java實例初始化程式 是在執行構造函數代碼之前執行的代碼塊。每當我們創建一個新對象時,這些初始化程式就會運行。 1.實例初始化語法 用 花括弧 創建實例初始化程式塊。對象初始化語句寫在括弧內。 2.Java實例初始化器功能 實例初始化器具有以下功能。 我們可以在一個類中定義 多個初始化器 。 所有 ...
Java實例初始化程式是在執行構造函數代碼之前執行的代碼塊。每當我們創建一個新對象時,這些初始化程式就會運行。
1.實例初始化語法
用花括弧創建實例初始化程式塊。對象初始化語句寫在括弧內。
public class DemoClass {
//This is initializer block 1
{
//statements
}
//This is initializer block 2
{
//statements
}
}
2.Java實例初始化器功能
實例初始化器具有以下功能。
- 我們可以在一個類中定義多個初始化器。
- 所有初始化程式將按順序執行,以使其出現在類主體中。
- 初始化程式在調用父類構造函數之後,在執行子類構造函數之前運行。請註意
super()
,如果我們未在子類的構造函數中顯式提供第一個語句,則Java會插入父類的預設構造函數。 - 執行完所有初始化程式後,將執行構造函數的語句。
- 我們可以在初始化器中使用此類和父類的構造函數的調用。
3.Java實例初始化序列流程
基於以上給出的功能,讓我們概述一下對象的實例初始化如何進行。
- 子類構造函數被調用。
- 子類構造函數的第一個語句為super()(或提供的顯式構造函數),因此將調用父類構造函數。
- 父類的初始化程式按其出現順序執行。
- 父類構造函數語句被執行。
- 子類的初始化程式按其出現順序執行。
-
4.Java實例初始化示例
讓我們快速地看一個演示以上理論的例子。
ParentClass.java
public class ParentClass
{
public ParentClass()
{
System.out.println("In ParentClass Constructor");
}
//Instance Initializer
{
System.out.println("In ParentClass Instance Initializer");
}
}
ChildClass.java
public class ChildClass extends ParentClass
{
public ChildClass()
{
super(); //If not provided, JVM will insert it
System.out.println("In ChildClass Constructor");
}
//Instance Initializer 1
{
System.out.println("In ChildClass Instance Initializer 1");
}
//Instance Initializer 2
{
System.out.println("In ChildClass Instance Initializer 2");
}
}
Main.java
public class Main
{
public static void main(String[] args)
{
ChildClass childObj = new ChildClass();
}
}
程式輸出
In ParentClass Instance Initializer
In ParentClass Constructor
In ChildClass Instance Initializer 1
In ChildClass Instance Initializer 2
In ChildClass Constructor