一个小例子看懂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认识也不深入,如果有什么有误的地方,希望各位指正哈。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值