美文网首页
java中父子类静态代码块、非静态代码块、构造方法等的执行顺序

java中父子类静态代码块、非静态代码块、构造方法等的执行顺序

作者: mundane | 来源:发表于2022-09-12 21:36 被阅读0次
public class Father {

    private int i = test();
    private static int j = method();

    static {
        System.out.println("father static code block");
    }

    Father() {
        System.out.println("father constructor");
    }

    {
        System.out.println("father common code block");
    }

    private static int method() {
        System.out.println("father static method");
        return 0;
    }

    public int test() {
        System.out.println("father field method");
        return 1;
    }
}
/**
 * 子类的实例化方法:
 * 1. super()
 *   1.1 父类的i = test()(被重写)
 *   1.2 父类非静态代码块
 *   1.3 父类的无参构造
 * 2. i = test()
 * 3. 子类的非静态代码块
 * 4. 子类的无参构造
 *
 */
public class Son extends Father{

    private int i = test();
    private static int j = method();

    static {
        System.out.println("son static code block");
    }

    Son() {
        super();// 写或者不写都在,在子类构造器中一定会调用父类的构造器
        System.out.println("son constructor");
    }

    {
        System.out.println("son common code block");
    }

    private static int method() {
        System.out.println("son static method");
        return 0;
    }

    @Override
    public int test() {
        System.out.println("son field method");
        return 1;
    }

    public static void main(String[] args) {
        Son s1 = new Son();
        System.out.println();
        Son s2 = new Son();
    }
}

输出结果:

father static method
father static code block
son static method
son static code block // 上面这部分是类初始化

son field method
father common code block
father constructor
son field method
son common code block
son constructor

son field method
father common code block
father constructor
son field method
son common code block
son constructor

解释

  1. 非静态实例变量显式赋值代码和非静态代码块代码按代码顺序从上往下执行
  2. 类变量显式赋值代码和静态代码块代码按代码顺序从上往下执行

参考

https://www.bilibili.com/video/BV1xt411S7xy?p=3

相关文章

  • 构造函数 非静态代码块 构造函数的执行顺序

    执行结果 父类--静态代码块子类--静态代码块父类--非静态代码块父类--构造函数子类--非静态代码块子类--构造函数

  • 类的初始化流程

    类之间 执行顺序为:父类静态代码块 >子类静态代码块 >当前主程序 >父类非静态代码块 >父类构造函数 >子类非静...

  • java代码执行顺序

    java中首先是静态块先执行,然后非静态代码块,最后是构造函数 执行结果 父类--静态代码块子类--静态代码块父类...

  • static代码块、构造代码块、构造函数以及Java类初始化顺序

    顺序:父类静态块-->子类静态块--> main方法-->父类构造代码块 -->父类构造函数-->子类构造代码块-...

  • Java类初始化中static代码块、构造代码块、构造函数的顺序

    1、顺序 父类静态块-->子类静态块--> main方法-->父类构造代码块-->父类构造函数-->子类构造代码块...

  • java 代码块顺序

    java 代码块的执行顺序: 静态变量 > 非静态变量静态变量 > 静态代码块 > 非静态代码块父构造 > 子构...

  • Java执行顺序

    父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函...

  • 类初始化执行顺序

    这里的执行顺序主要包括如下几个点: 静态代码块 静态方法 实例方法 代码块 构造函数 父类与子类中以上的顺序 直接...

  • 牛客学习第二天

    子类继承父类,方法执行顺序: 先执行父类的静态方法再执行子类的静态方法然后父类的构造代码块、构造方法、子类的构造代...

  • Java代码执行顺序

    java中子类继承父类程序执行顺序问题 Java中,new一个类的对象,类里面的静态代码块、非静态代码、无参构造方...

网友评论

      本文标题:java中父子类静态代码块、非静态代码块、构造方法等的执行顺序

      本文链接:https://www.haomeiwen.com/subject/aefcortx.html