【知識總結】Java類初始化順序說明

微信公衆號:努力編程的小豬
若有問題或建議,請公衆號留言java

Java類初始化順序說明

一個類中包含以下幾類東西,他們先後是有順序關係的編程

  1. 靜態屬性:static 開頭定義的屬性
  2. 靜態方法塊: static {} 圈起來的方法塊
  3. 普通屬性: 未帶static定義的屬性
  4. 普通方法塊: {} 圈起來的方法塊
  5. 構造函數: 類名相同的方法
  6. 方法: 普通方法

初始化順序

public class LifeCycle {
// 靜態屬性
private static String staticField = getStaticField();
// 靜態方法塊
static {
System.out.println(staticField);
System.out.println("靜態方法塊初始化");
System.out.println("Static Patch Initial");
}
// 普通屬性
private String field = getField();
// 普通方法塊
{
System.out.println(field);
System.out.println("普通方法塊初始化");
System.out.println("Field Patch Initial");
}
// 構造函數
public LifeCycle() {
System.out.println("構造函數初始化");
System.out.println("Structure Initial ");
}

public static String getStaticField() {
String statiFiled = "Static Field Initial";
System.out.println("靜態屬性初始化");
return statiFiled;
}

public static String getField() {
String filed = "Field Initial";
System.out.println("普通屬性初始化");
return filed;
}
// 主函數
public static void main(String[] argc) {
new LifeCycle();
}
}

執行結果:微信

靜態屬性初始化
Static Field Initial
靜態方法塊初始化
Static Patch Initial
普通屬性初始化
Field Initial
普通方法塊初始化
Field Patch Initial
構造函數初始化
Structure Initial

總結:包含父子類和接口類

普通類:
  • 靜態變量
  • 靜態代碼塊
  • 普通變量
  • 普通代碼塊
  • 構造函數
繼承的子類:
  • 父類靜態變量
  • 父類靜態代碼塊
  • 子類靜態變量
  • 子類靜態代碼塊
  • 父類普通變量
  • 父類普通代碼塊
  • 父類構造函數
  • 子類普通變量
  • 子類普通代碼塊
  • 子類構造函數
抽象的實現子類: 接口 - 抽線類 - 實現類
  • 接口靜態變量
  • 抽象類靜態變量
  • 抽象類靜態代碼塊
  • 實現類靜態變量
  • 實習類靜態代碼塊
  • 抽象類普通變量
  • 抽象類普通代碼塊
  • 抽象類構造函數
  • 實現類普通變量
  • 實現類普通代碼塊
  • 實現類構造函數
接口注意:
  • 聲明的變量都是靜態變量而且是final的,因此子類沒法修改,而且是固定值不會由於實例而變化
  • 接口中能有靜態方法,不能有普通方法,普通方法須要用defalut添加默認實現
  • 接口中的變量必須實例化
  • 接口中沒有靜態代碼塊、普通變量、普通代碼塊、構造函數
相關文章
相關標籤/搜索