創建順序如下:
- 父類靜態成員(包括方法和變量,按順序初始化)
- 子類靜態成員(包括方法和變量,按順序初始化)
- 父類成員變量(包括非靜態代碼塊)
- 父類構造方法
- 子類成員變量(包括非靜態代碼塊)
- 子類構造方法
驗證代碼:
// 主類,用來創建子類對象,驗證我們的結果
public class Main {
public static void main(String[] args) {
new Son();
}
}
// 書類,用於測試對象成員變量
class Book{
public Book(String user){
System.out.println(user + "成員變量");
}
}
// 子類
class Son extends Fa{
static Book book= new Book("子類靜態");
static{
System.out.println("子類靜態代碼塊");
}
Book sBook = new Book("子類");
{
System.out.println("子類非靜態代碼塊");
}
public Son(){
System.out.println("子類構造方法");
}
}
// 父類
class Fa{
static Book book= new Book("父類靜態");
static{
System.out.println("父類靜態代碼塊");
}
Book fBook = new Book("父類");
{
System.out.println("父類非靜態代碼塊");
}
public Fa(){
System.out.println("父類構造方法");
}
}
輸出結果:
父類靜態成員變量
父類靜態代碼塊
子類靜態成員變量
子類靜態代碼塊
父類成員變量
父類非靜態代碼塊
父類構造方法
子類成員變量
子類非靜態代碼塊
子類構造方法