[java]初始化順序

package test;

class Unit{
    
public Unit(String msg){
        System.out.println(
"Unit constructor "+msg);
    }

}

class Super{
    
private Unit u = new Unit("inside Super");
    
private static Unit su1 = new Unit("static field before static block");
    
static{
        System.out.println(
"Super static ");
    }

    
    
public Super(){
        System.out.println(
"Super constructor");
    }


    
private static Unit su2 = new Unit("static field after static block");
}

public class Order extends Super{
    
static{
        System.out.println(
"Order static");
    }

    
public Unit u = new Unit("inside Order");
    
    
public Order(){
        System.out.println(
"Order constructor");
    }


    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        new Order();
    }

}

//輸出:
//Unit constructor static field before static block
//Super static 
//Unit constructor static field after static block
//Order static
//Unit constructor inside Super
//Super constructor
//Unit constructor inside Order
//Order constructor


初始化順序
1、父類static block、static field  //看出現的順序
2、子類static block、static field  //看出現的順序
3、 父類non-static域
4、 父類constructor
5、 子類non-static域
6、 子類constructor
發佈了64 篇原創文章 · 獲贊 17 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章