这是Java 笔试经常遇到的一个问题,所有特定写代码研究下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Father {
public Father() {
System.out.println("In Father");
}
}

class Children extends Father {
private Friend friend = new Friend();
public Children() {
System.out.println("In Children");
}

}

class Friend {
public Friend() {
System.out.println("In Friend");
}
}

以上三个对象,运行 new Children(); ,执行的结果是

In Father
In Friend
In Children

结论

先执行基类构造函数,再执行成员类构造函数,最后执行子类构造函数。