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

    经理招聘,让我看了下面试题,有道涉及static方法与构造方法执行顺序问题。我又添加了个构造代码块,给大家详细解释一下

    class A {
        //直接在类中定义且没有加static关键字的代码块称为{}构造代码块,加了static关键字的static{}成为静态代码块
        // 静态内容是随着类的加载而加载的,因此执行顺序static代码块>构造方法
        public A() {// 构造方法。在该类被实例化的时候被执行
            System.out.print("1");
        }
        {// 构造代码块在类实例化时被调用,每次创建对象都会被调用,执行次序构造代码块>构造函数。
            System.out.print("2");
        }
        static {// 静态代码块,在该类被加载入JVM时,被执行,且只会被执行一次。不能被继承。
            System.out.print("3");
        }
    }
    
    class B extends A {
        static {
            System.out.print("4");
        }
        {
            System.out.print("5");
        }
        public B() {
            // 默认super();继承父类构造方法.且为子类无参构造第一行
            System.out.print("6");
        }
    }
    
    public class Hello {
        public static void main(String[] args) {
            A ab = new B();// 声明父类型子对象,new的B类,但B继承自A类,加载B类时先加载A类
            //A静态>B静态>A构造代码块>A构造方法>B构造代码块>B构造
            ab = new B();
        }
    }
    View Code
  • 相关阅读:
    part11-1 Python图形界面编程(Python GUI库介绍、Tkinter 组件介绍、布局管理器、事件处理)
    part10-3 Python常见模块(正则表达式)
    Cyclic Nacklace HDU
    模拟题 Right turn SCU
    状态DP Doing Homework HDU
    Dp Milking Time POJ
    区间DP Treats for the Cows POJ
    DP Help Jimmy POJ
    Dales and Hills Gym
    Kids and Prizes Gym
  • 原文地址:https://www.cnblogs.com/yanan7890/p/8473510.html
Copyright © 2011-2022 走看看