在JAVA中,下面是People和Child类的定义和构造方法,每个构造方法都输出编号。在执行new Child("mike")的时候都有哪些构造方法被顺序调用?请选择输出结果( )
class People {
String name;
public People() {
System.out.print(1);
}
public People(String name) {
System.out.print(2);
this.name = name;
}
}
class Child extends People {
People father;
public Child(String name) {
System.out.print(3);
this.name = name;
father = new People(name + ":F");
}
public Child() {
System.out.print(4);
}
}312
32
432
132
构造函数的执行顺序为:
1、执行Object类的非静态初始化块;
2、隐式或显式调用Object类的一个或多个构造函数执行初始化;
3、执行Parent累的非静态初始化块;
4、隐式或显式调用Parent类的一个或多个构造函数执行初始化;
5、执行Mid累的非静态初始化块;
6、隐式或显式调用Mid类的一个或多个构造函数执行初始化;
7、执行Sub累的非静态初始化块;
8、隐式或显式调用Sub类的一个或多个构造函数执行初始化;
1、执行Object类的非静态初始化块;
2、隐式或显式调用Object类的一个或多个构造函数执行初始化;
3、执行Parent累的非静态初始化块;
4、隐式或显式调用Parent类的一个或多个构造函数执行初始化;
5、执行Mid累的非静态初始化块;
6、隐式或显式调用Mid类的一个或多个构造函数执行初始化;
7、执行Sub累的非静态初始化块;
8、隐式或显式调用Sub类的一个或多个构造函数执行初始化;