java---靜態程式碼塊、構造程式碼塊、構造方法、成員變數預設初始化及顯式初始化的執行順序
阿新 • • 發佈:2020-12-19
1.子類繼承父類,例項化子類物件時
父類靜態程式碼塊 ------》子類靜態程式碼塊 ------》父類成員變數預設初始化 -------》(父類構造程式碼塊-,顯示初始化)兩者誰在前誰先執行 ---------》父類構造方法------》子類成員變數預設初始化 -------》(子類構造程式碼塊,子類成員變數顯示初始化)兩者誰在前誰先執行 ------》子類構造方法
2.單一類,例項化物件時
靜態程式碼塊 --》成員變數預設初始化 --》 成員變數顯示初始化 --》 非靜態程式碼塊
測試程式碼:
package cn.tedu.oop;
public class JiCheng {
public static void main(String[] args) {
new Son();
}
}
class Fa{
//隱式初始化
//構造程式碼塊----------------------------與顯式初始化誰在前誰先執行
{
System.out.println(this.a);
}
//顯示初始化
int a=10;
//構造方法----------------------------一般最後執行
Fa(){
System.out.println (a);
}
}
class Son extends Fa{
//顯式初始化
int a=11;
//構造程式碼塊----------------------------與顯式初始化誰在前誰先執行
{
System.out.println(this.a);
System.out.println(super.a);
}
//構造方法----------------------------一般最後執行
Son(){
super();
System.out.println(a);
}
}
執行結果: