【知识总结】Java类初始化顺序说明
生活随笔
收集整理的這篇文章主要介紹了
【知识总结】Java类初始化顺序说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
微信公眾號:努力編程的小豬
如有問題或建議,請公眾號留言
Java類初始化順序說明
一個類中包含如下幾類東西,他們前后是有順序關系的
初始化順序
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添加默認實現
- 接口中的變量必須實例化
- 接口中沒有靜態代碼塊、普通變量、普通代碼塊、構造函數
轉載于:https://www.cnblogs.com/fly-piglet/p/8766226.html
總結
以上是生活随笔為你收集整理的【知识总结】Java类初始化顺序说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery常见的选择器
- 下一篇: Java的工厂模式(三)