天天看點

java繼承中new子類對象的執行順序

java建立對象的幾種方式:

(1) 用new語句建立對象,這是最常見的建立對象的方法。

(2) 運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()執行個體方法。

(3) 調用對象的clone()方法。

(4) 運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。

下面測試代碼塊,靜态代碼塊,構造器的初始化順序

public class TestExtends {

public static void main(String[] args) {

A a = new A(5);

Son s = new Son();

}

}

class B {

private int radius = 10;

public void draw() {

System.out.println("B.draw(), radius = " + radius);

}

public B() {

System.out.println("B constructor");

draw();

}

}

class A extends B {

private int radius = 1;

public void draw() {

System.out.println("A.draw(), radius = " + radius);

}

public A(int radius) {

this.radius = radius;

System.out.println("A constructor");

System.out.println("A.draw(), radius = " + radius);

}

}

class Parent{  

    {  

        System.out.println("parent中的初始化塊");  

    }  

    static{  

        System.out.println("parent中static初始化塊");  

    }  

    public Parent(){  

        System.out.println("parent構造方法");  

    }  

}  

class Son extends Parent{  

    {  

        System.out.println("son中的初始化塊");  

    }  

    static{  

        System.out.println("son中的static初始化塊");  

    }  

    public Son(){  

        System.out.println("son構造方法");  

    }  

}