一个小例子看懂java对象初始化执行过程

创建java对象对于做java程序开发的我们来说再简单不过了,也就是new 构造方法,不过很多人可能对于内部执行的过程不是很清楚。我们知道java的类是动态加载的,只有当需要的时候才会加载入虚拟机,分配内存,创建对象。本文就是用一个小例子来说明随想创建的一些基本过程。

看例子程序:

首先一个简单的类Bird:

public class Bird {
    String a = "i am a in Bird";
    static String d = "i am d";

    static {
        System.out.println("static Bird static block");
        System.out.println("static Bird d:"+d);
    }

    {
        System.out.println("Construct block Bird  ");
        System.out.println("Construct block Bird d:"+d +" " + "a:"+a);
    }

    public Bird() {
        System.out.println("Constructor Bird ");
        System.out.println("Constructor Bird d:"+d +" " + "a:"+a);
    }
}



Bird的子类Duck:

public class Duck extends Bird{
    String a = "i am a in Duck";
    String b = "i am b";
    static String c = "i am c";
    static {
        System.out.println("static Duck static block");
        System.out.println("static Duck c:"+c);
    }

    {
        System.out.println("Construct block Duck ");
        System.out.println("Construct block Duck a:"+a + "  " + "b:" + b);

    }
    public Duck() {
        System.out.println("Constructor Duck ");
        System.out.println("Constructor c:"+c);
        System.out.println("Constructor a:"+a + "  " + "b:" + b);
    }
}


执行结果:

static Bird static block
static Bird d:i am d
static Duck static block
static Duck c:i am c
Construct block Bird  
Construct block Bird d:i am d a:i am a in Bird
Constructor Bird 
Constructor Bird d:i am d a:i am a in Bird
Construct block Duck 
Construct block Duck a:i am a in Duck  b:i am b
Constructor Duck 
Constructor c:i am c
Constructor a:i am a in Duck  b:i am b


从这个结果我们可以得出一个对象创建的基本执行流程:

1.基类static域赋值

2.基类static块执行

3.子static域赋值

4.static块执行

5.基类成员变量赋值

6.基类构造块执行

7.基类构造方法

8.子类成员变量赋值

9.子类构造块执行

10.子类构造方法

就这样介于,本人对于java认识也不深入,如果有什么有误的地方,希望各位指正哈。

发布了69 篇原创文章 · 获赞 76 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/sinat_23092639/article/details/53462802