zoukankan      html  css  js  c++  java
  • 构造方法、静态代码块、动态代码块运行顺序

    超类:

    public class A {
        public A() {
            System.out.println("A 类构造方法执行");
        }
        {System.out.println("A 类动态代码块执行");}
        static {System.out.println("A 类静态代码块执行");}
        
    }

    子类:

    public class B extends A{
        public B() {
            System.out.println("B 类构造方法执行");
        }
        {System.out.println("B 类动态代码块执行");}
        static {System.out.println("B 类静态代码块执行");}
        
        public static void main(String[] args) {
            System.out.println("start");
            new B();
            System.out.println("end");
        }
        /*
         * A 类静态代码块执行
         * B 类静态代码块执行
         * start
         * A 类动态代码块执行
         * A 类构造方法执行
         * B 类动态代码块执行
         * B 类构造方法执行
         * end
         */
    }

    运行结果分析:

    1、加载main方法所在的B类,但B类继承了A类,所以在加载B类前先加载A类

    2、加载B类

    3、运行main方法,输出start字符串

    4、调用构造方法创建B类的对象,但因为B类有父类,所以先调用父类A类的构造方法,但在调用A类的构造方法前要先调用A类的动态方法

    5、调用父类的构造方法

    6、调用子类的动态方法

    7、调用子类的构造方法

    8、输出end字符串

    
    
  • 相关阅读:
    k8s存储(部署理论)
    DELL R720针对磁盘故障面板信息误报解决
    ovirt平台新建kvm操作
    宿主机计划任务执行docker相关命令
    网企-11-12
    洛谷-P1164 小A点菜
    洛谷-P1060 开心的金明
    洛谷-P1305 新二叉树
    洛谷-P1030 求先序排列
    洛谷-P1087 FBI树
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/10109903.html
Copyright © 2011-2022 走看看