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

package com.yunhe.TestClone;

/**
 * @ProjectName Student2
 * @ClassName Testss
 * @Description TODO
 * @Author jing
 * @Date 2018/11/15 14:43
 * @Version 1.0
 **/

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[] args) {
        A ab = new B();
        ab = new B();
    }
}

答:执行结果:1a2b2b。创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。

猜你喜欢

转载自blog.csdn.net/weixin_40197494/article/details/84104178