java对象初始化书序

package com.test.aa.service;

public class Test extends B {
    public int a = 100;
    public static int a1=3;

    public Test() {
        super();
        System.out.println(a);
        a = 200;
    }

    public static void main(String[] args) {
        System.out.println(new Test().a);
    }
}

class B {
    public int b = 10;
    public static int b1=4;
   
    public B() {
        System.out.println(((Test) this).a);
    }
}

输出0 100 200

在实例化类的对象的时候 new XXX();java的初始化顺序是按一下来的:

首先是在内存堆分配存储要的内存 然后进入:

1.初始化父类的静态变量和静态块
2.初始化子类的静态变量和静态块
3.设置父类的属性的默认值 int=0 boolean=false对象为null
4.设置子类的属性的默认值  int=0 boolean=false对象为null
5.初始化父类属性赋值a=200
6.调用父类的构造函数
7.初始化子类的属性赋值b=100
8.调用子类的构造函数
结束

猜你喜欢

转载自waverju.iteye.com/blog/2064344