[java]初始化顺序

来源:互联网 发布:荷鲁斯之眼与全知之眼 编辑:程序博客网 时间:2024/04/23 20:08
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
原创粉丝点击