java 继承 面试

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 Test {
    public static void main(String[] ars) {
        A ab = new B(); // 执行到此处,结果: 1a2b
        ab = new B(); // 执行到此处,结果: 1a2b2b
    }
}
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 Test {
    public static void main(String[] ars) {
        A ab = new B(); // 执行到此处,结果: 1a2b
        ab = new B(); // 执行到此处,结果: 1a2b2b   静态代码区只执行一次。
    }
}
原文地址:https://www.cnblogs.com/2714585551summer/p/5939964.html