您的位置 首页 java

一文读懂Java初始化顺序

一文读懂Java初始化顺序


前言

在Java程序中,当实例化对象时,对象的所在类的所有成员变量都要进行初始化,只有初始化完成才会调用构造方法创建对象。来一起看看吧~

初始化规则

  1. 变量优先于块,静态优先于非静态。
  2. 父类优先于派生类初始化。
  3. 按照成员变量定义的顺序来初始化,即使变量定义散布于各种方法定义之间,它们仍然会在构造方法被调用前完成初始化。

举栗 代码

 class Father {

    public Father() {
        System.out.println("父类构造方法");
    }

    String str = "父类非静态变量";

    {
        System.out.println(str);
        System.out.println("父类非静态块");
    }

    static String strStatic = "父类静态变量";

    static {
        System.out.println(strStatic);
        System.out.println("父类静态块");
    }
}

public class Son extends Father {

    public Son() {
        System.out.println("子类构造器 ");
    }

    String str = "子类非静态变量";

    {
        System.out.println(str);
        System.out.println("子类非静态块");
    }

    static String strStatic = "子类静态变量";

    static {
        System.out.println(strStatic);
        System.out.println("子类静态块");
    }

    public static void main(String[] args) {
        new Son();
    }
}

//运行结果
父类静态变量
父类静态块
子类静态变量
子类静态块
父类非静态变量
父类非静态块
父类构造方法
子类非静态变量
子类非静态块
子类构造器
  

关注即可提高学习效率!我是Aime菌,下期再见!Peace~

文章来源:智云一二三科技

文章标题:一文读懂Java初始化顺序

文章地址:https://www.zhihuclub.com/200513.shtml

关于作者: 智云科技

热门文章

网站地图