JAVA类的初始化顺序(静态变量,静态模块,变量,模块,构造器)

           对于静态变量,与类变量及构造器初始化顺序的朋友们,大家看过来了,阅读了以后几段代码之后,你会发现原来也就是这么简单.先看下面这几个类.

  

/**类A**/
public class TestA {
    public TestA(String a){
        System.out.println(a);
    }
}
/**类B**/
public class TestB {
    public TestB(String b){
        System.out.println(b);
    }
}
/**类 Parent **/
public class Parent {
    private static TestA testA1 = new TestA("Parent的静态变量");
    static {
        System.out.println("Parent的静态初始化模块");
    }
    private  TestA testA2 = new TestA("Parent变量");
    {
        System.out.println("Parent的初始化模块");
    }
    public Parent(){
        System.out.println("Parent的构造函数");
    }
}

/**Parent的子类SubClass**/
public class SubClass extends Parent{
    private static TestA testA1 = new TestA("SubClass的静态变量1");
    static {
        System.out.println("SubClass的静态初始化模块1");
    }
    private static TestA testA2 = new TestA("SubClass的静态变量2");
    static {
        System.out.println("SubClass的静态初始化模块2");
    }
    private  TestA testA3 = new TestA("SubClass变量1");
    {
        System.out.println("SubClass的初始化模块1");
    }
    private  TestA testA4 = new TestA("SubClass变量2");
    {
        System.out.println("SubClass的初始化模块2");
    }
    public SubClass(){
        System.out.println("SubClass的构造函数");
    }
    public static void main(String[] args) {
        SubClass subClass = new SubClass();
    }
}

 

打印结果如下:

    Parent的静态变量
    Parent的静态初始化模块

    SubClass的静态变量1

    SubClass的静态初始化模块1

    SubClass的静态变量2

    SubClass的静态初始化模块2

    Parent变量

    Parent的初始化模块

    Parent的构造函数

    SubClass变量1

    SubClass的初始化模块1

    SubClass变量2

    SubClass的初始化模块2

    SubClass的构造函数

 说明 :

1.静态变量与静态模块是最先初始化的,因为它是属于类的变量和模块.

2.Parent的构造器要先于它的子类,这一点是肯定的,但Parent的变量,初始化模块要先于它的子类,这一点可能理解起来有点困难,但我们只要知道父类的构造器先于子类,它的变量与模块也是理所当然的,这样理解起来会比较合理.

3.静态变量与静态模块的初始化顺序是根据在类里面定义的顺序,同理变量化初始化模块的顺序也是根据类里面定义的顺序(上面结果的红色部门)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值