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方法)
  • 相关阅读:
    POJ 2349 Arctic Network
    OpenJudge 东方14ACM小组 / 20170123 06:Challenge 3
    OpenJudge 东方14ACM小组 / 20170123 02 岛屿
    Best Coder Lotus and Characters
    洛谷 P 1164 小A点菜
    楼房
    虫食算
    斗地主
    国王游戏
    最优贸易
  • 原文地址:https://www.cnblogs.com/bigorang/p/13554675.html
Copyright © 2011-2022 走看看