Java 初始化及类的加载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dc282614966/article/details/88661869
public class Insect {

    private int i = 9;
    protected int j;
    public Insect(){
        System.out.println("i="+i+",j="+j);
        j=39;
    }
    private static int x1 = printInit("static Insect.x1 initialized") ;
    static int printInit(String s){
        System.out.println(s);
        return 47;
    }
}
public class Bettle extends Insect {

    private int k = printInit("Bettle.k initialized");
    public  Bettle(){
        System.out.println("k="+k);
        System.out.println("j="+j);
    }

    private static int x2 = printInit("static Bettle.x2 initialized");

    public static void main(String[] args) {
        System.out.println("Bettle Constuctor");
        new Bettle();
    }
}

在Bettle上运行java时,所发生的第一件事就是试图访问Bettle.main(),首先先加载基类对象。然后基类中的static初始化,然后是导出类。最后开始创建对象,首先对象中的基本类型都会被设置为默认值,对象设置为null,然后基类的构造器会被调用,接着导出类构造器被调用,最后构造器的其余部分被执行。

执行结果如下:

static Insect.x1 initialized
static Bettle.x2 initialized
Bettle Constuctor
i=9,j=0
Bettle.k initialized
k=47
j=39

猜你喜欢

转载自blog.csdn.net/dc282614966/article/details/88661869