- 首先執行基類的構造函數
- 然后執行派生類的構造函數之外的初始化語句
- 最后執行派生類的構造函數
在Java中,如果派生類構造函數需要調用基類的構造函數,那么基類構造函數必須作為派生類構造函數的第一句話。在Python中,派生類調用基類的構造函數就比較靈活。
如下代碼有一個基類Base,一個派生類Son,Son有一個成員變量Value。在創建Son對象時,執行順序為基類的構造函數、Value的構造函數、Son的構造函數。
package weiyinfu.colorama;
public class Why {
class Base {
Base() {
System.out.println("base is called");
}
}
class Value {
Value() {
System.out.println("value is called");
}
}
class Son extends Base {
Value v = new Value();
Son() {
System.out.println("son is called");
}
}
public static void main(String[] args) {
Why y = new Why();
Son s = y.new Son();
}
}
