class A extends By{
{
System.out.println("A1");
}
public A(){
System.out.println("A2");
}
static{
System.out.println("A3");
}
public static void main(String[] args){   
new A();
System.out.println("A4");
}
}class By{
{
System.out.println("B1");
}
public By(){
System.out.println("B2");
}
static{
System.out.println("B3");
}
{
System.out.println("B4");
}
}请问这个代码的详细的执行顺序是什么样子的.还有类的
{
System.out.println("B1");
}是什么意思。

解决方案 »

  1.   

    输出是:
    B3
    A3
    B1
    B4
    B2
    A1
    A2
    A4顺序是:
    new A()语句的执行顺序是:
    先构造B对象,再构造A对象
    而构造对象的顺序又是
    1.静态块(优先级最高,先超类后子类)所以输出B3、A3
    2.超类方法外程序块 输出B1、B4
    3.超类构造方法 B2
    4.子类方法外程序块 A1
    5.子类构造方法 A2new A()执行完毕,执行下一语句
    输出 A4