指出下面程序的运行结果:

class A {
    static {
        System.out.print("1");
    }

    public A() {
        System.out.print("2");
    }
}

class B extends A {
    static {
        System.out.print("a");
    }

    public B() {
        System.out.print("b");
    }
}

public class Hello {
    public static void main(String[] ars) {
        A ab = new B(); 
        ab = new B();
    }
}

参考解答

输出结果为1a2b2b

分析

执行顺序为:

  1. 类加载 (仅1次)
  2. 初始化静态成员变量,执行静态代码块,从父类到子类(仅1次)
  3. 父类的成员变量空间分配,初始化成员变量,执行初始化代码块,构造方法
  4. 子类的成员变量空间分配,初始化成员变量,执行初始化代码块,构造方法

results matching ""

    No results matching ""