Java繼承 初始化順序(四)

2021-07-31 07:25:45 字數 835 閱讀 3338

在new建立物件時,首先對物件屬性和初始化塊分配記憶體,並執行預設初始化。如果存在父類,則先為父類物件屬性和初始化塊先分配記憶體並執行初始化。然後執行父類構造器中的初始化程式,接著才開始對子類的物件屬性和初始化塊執行初始化。

我們修改一下**,看一下繼承的初始化順序:

package com.ws.basic;

class gameobject

public int life_reduce(int ai_reduce)

public int life_add(int ai_add) }

class creature extends gameobject

public void move()

public void normal_attack()

}class hero extends creature

// 重寫普通攻擊方法

public void normal_attack()

public void skill_attack()

public void eat_food(int food)

}public class testjc

}

執行:

gameobject建立!

creature建立!

hero建立!

**師甘道夫用火球攻擊!

結論:通過**的執行,我們可以清晰的了解繼承時候的初始化順序,系統首先初始化了gameobject,然後初始化了creature,接著初始化了hero。所以,對於乙個問題加深理解最好的方法,就是寫段**,測試一下。

java中繼承的初始化順序

1 繼承的初始化順序 a 初始化父類再初始化子類 b 先執行初始化物件中屬性,再執行構造方法中的初始化 eg a public class animal public animal public class dog extends animal public class initail 輸出結果 a...

java初始化順序

1 父類靜態成員和靜態初始化塊 按在 中出現的順序依次執行 2 子類靜態成員和靜態初始化塊 按在 中出現的順序依次執行 3 父類例項成員和例項初始化塊 按在 中出現的順序依次執行 4 父類構造方法 5 子類例項成員和例項初始化塊 按在 中出現的順序依次執行 6 子類構造方法 public abstr...

java初始化順序

例如以下 package chapter5 public class demo1one public void printinfo public static void main string args 程式一開始先執行 private static string password 0721 這行 ...