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");
}是什么意思。
{
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");
}是什么意思。
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