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
  • 相关阅读:
    求助:C#读文本文件(编码未知)的问题
    求助:字符的显示问题
    常用的xml文件操作
    关于旧表导入新表的数据冲突问题
    通过批处理管理安装windows服务
    windows服务,批处理安装
    ajax的请求的超时处理
    消息队列的使用
    c#程序执行cmd命令
    dynamic(翻译)
  • 原文地址:https://www.cnblogs.com/yanan7890/p/8473510.html
Copyright © 2011-2022 走看看