# re: 也談一個對象初始化細節 回復 更多評論
2007-12-20 14:53 by
記住以下兩點就好理解了
類的成員先于實例成員初始化
父類實例與子類實例的關系可以理解為 Is-A 的關系
所以子類實例初始化之前必須先有父類的實例
其實還應該區分類的初始化和實例了初始化,反應到字節碼操作指令中是
類的初始化方法是 <clinit>()
實例的初始化方法是 <init>()
任何一個類的初媽化都要求它的所有祖先類(而不是祖先接口)預先被初始化。而一個接口的初始化,并不要求它的祖先接口預先被初始化。
類有主動初始化和被動初始化,如new和使用靜態字段,還有我們一定用過 Class.forName() 方法,它還有一個重載方法 forName(String name, boolean initialize, ClassLoader loader),一個參數的forName,默認的initialize 是 true,即加載后就初始化。