zoukankan      html  css  js  c++  java
  • 构造问题

    先记录,再分析

    
    class HelloB extends HelloA {
    
        public HelloB(String a) {
            System.out.println("Constructor B");
        }
    
        static {
            System.out.println("static B");
        }
    
        {
            System.out.println("block B class");
        }
    
        public static void main(String[] args) throws ClassNotFoundException {
            new HelloB("B");
            System.out.println("-----------");
            new HelloB("B");
            //Class.forName(HelloA.class.getName());
            //Class.forName(HelloA.class.getName(), false, HelloB.class.getClassLoader());
        }
    }
    
    class HelloA {
    
        public HelloA() {
            System.out.println("Constructor A");
        }
    
        static {
            System.out.println("static A");
        }
    
        {
            System.out.println("block A class ");
        }
    }
    

    输出结果

    static A
    static B
    block A class 
    Constructor A
    block B class
    Constructor B
    -----------
    block A class 
    Constructor A
    block B class
    Constructor B
    

    结论: 按 静态块 -> 普通块 -> 构造方法 的顺序执行

    类加载的情况:

    1. 实例化
    2. 访问其静态变量或对静态变量赋值
    3. 调用静态方法
    4. 反射class.forName("");forName有(string,boolean,classLoader) 方法,指定boolean init=false时不会初始化、
    5. 初始化一个类的子类、
    6. 虚拟机启动被标注为启动的类(Main方法)
  • 相关阅读:
    Android客户端与服务器交互方式-小结
    个人工作总结01
    第7周学习进度
    第6周学习进度
    PHP_D4_“简易聊天室 ”的具体技术实现
    php_D3_“简易聊天室 ”实现的关键技术 详解
    团队介绍
    最大联通子数组
    构建之法阅读笔记04
    大道至简阅读笔记04
  • 原文地址:https://www.cnblogs.com/bigorang/p/13554675.html
Copyright © 2011-2022 走看看