Java 靜態語句塊 語句塊 建構函式執行順序

2021-06-18 19:56:47 字數 658 閱讀 2446

package test;    

class parent

static

public parent()

}

class child extends parent

static

public child()

}

public class staticiniblockordertest

}

分析:物件的初始化順序:首先執行父類靜態的內容,父類靜態的內容執行完畢後,接著去執行子類的靜態的內容,當子類的靜態內容執行完畢之後,再去看父類有沒有非靜態**塊,如果有就執行父類的非靜態**塊,父類的非靜態**塊執行完畢,接著執行父類的構造方法;父類的構造方法執行完畢之後,它接著去看子類有沒有非靜態**塊,如果有就執行子類的非靜態**塊。子類的非靜態**塊執行完畢再去執行子類的構造方法。總之一句話,靜態**塊內容先執行,接著執行父類非靜態**塊和構造方法,然後執行子類非靜態**塊和構造方法。

而且子類的構造方法,不管這個構造方法帶不帶引數,預設的它都會先去尋找父類的不帶引數的構造方法。如果父類沒有不帶引數的構造方法,那麼子類必須用supper關鍵子來呼叫父類帶引數的構造方法,否則編譯不能通過。

本文**:

Java 靜態語句塊 語句塊 建構函式

以下是一道筆試題 package com.example public class parent static package com.example public class child extends parent static public static void main string ar...

靜態語句塊 構造語句塊和建構函式的執行順序

public class a 非靜態 塊 靜態 塊 static public class bextends a 非靜態語句塊 靜態語句塊 static public static void main string args 執行結果 new兩次 public class bextends a 非靜...

靜態語句塊 構造語句塊以及建構函式的執行順序

class helloa static public class hellob extends helloa static public static void main string args 輸出 static astatic b main start i m a class helloa i ...