JAVA-繼承中的靜態程式碼塊執行順序
阿新 • • 發佈:2021-01-21
技術標籤:JAVA
父類
package FuZi;
public class Fu {
public Fu() {
System.out.println("父類構造方法");
}
//父類靜態程式碼塊
static {
System.out.println("父類靜態程式碼塊,位元組碼檔案載入即執行,只執行一次");
}
public void Fathers(){
System.out.println("父類公有方法");
}
{
System.out.println("父類非靜態程式碼塊");
}
public static void main(String[] args) {
System.out.println("父類main方法");
}
}
子類
package FuZi;
public class Zi extends Fu{
public Zi() {
System.out.println("子類無參構造");
}
static {
System.out.println("子類靜態程式碼塊,位元組碼檔案載入即執行,且執行一次");
}
{
System.out.println("子類非靜態程式碼塊");
}
public void Zition(){
System.out.println("子類非靜態程式碼塊");
}
public static void main(String[] args) {
System.out.println("子類 main 方法" );
//new Zi();
}
}
呼叫
package FuZi;
public class TextDemo {
public static void main(String[] args) {
Zi zi = new Zi();//建立子類物件
zi.Fathers();//子類物件呼叫父類公有方法
}
}
執行結果 先靜(父子)後非靜(父子)再構造(父子)
父類靜態程式碼塊,位元組碼檔案載入即執行,只執行一次
子類靜態程式碼塊,位元組碼檔案載入即執行,且執行一次
父類非靜態程式碼塊
父類構造方法
子類非靜態程式碼塊
子類無參構造
=========
父類公有方法
Process finished with exit code 0