1. 程式人生 > >Java中的初始化過程

Java中的初始化過程

Java中變數初始化順序:

1.靜態變數在類載入時初始化
2.將分配給物件的儲存空間初始化成二進位制的0,即先將所有的非靜態成員變數初始化成0
3.如果有父類,先呼叫父類構造方法
4.按照宣告的順序呼叫初始化成員變數
5.呼叫子類的構造方法主體

具體例子可以看下面這段程式碼:

public class InitOrder {

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

}
class Shape{
    public Shape(){
        System.out.println("Shape構造方法"
); print(); System.out.println("Shape構造方法"); } public void print(){ System.out.println("父類"); } } class Circle extends Shape{ private int i = 1; private static int j = 1; public Circle(){ super(); // 這裡會預設呼叫父類構造 System.out.println("Circle構造方法"
); print(); System.out.println("Circle構造方法"); } public void print(){ System.out.println("子類,i=" + i + ",j=" + j); } }

輸出結果:
這裡寫圖片描述
在子類初始化時,靜態變數先初始化(j=1);非靜態變數初始化為0(i=0)。然後在呼叫子類構造方法前先呼叫父類構造方法,而父類構造方法中有一個多型方法,此時i=0,j=1。父類構造呼叫完後,成員變數按宣告順序初始化,此時i=1,j=1。