l Constructor:
執行
順序
n 配置參考變數,配置記憶體
n 預設初始化(將該object內所有fields全歸零)
n 明顯初始化(依定義順序執行instance var init及instance(non-static free floating block) init,此動作將與下個動作交叉執行)
n 執行連緒的建構子
u 當程式一直往上呼叫,在回程且跨越class時(從Object回到A class),會先check class A是否有做明顯初始化。
語法
n constructor第一行必須是this(..)或super(..),否則JVM會自己在第一行插入super()。
n this(...)是用來呼叫另一個overloading constructor。使用時必須是constructor的第一行。
n super(...)是用來呼叫父類別的某個constructor,使用時必須是constructor的第一行。
可以
n 方法名稱(Method)可以跟Constructor和Class名稱相同。
n Constructor可以用 public、private、protected、(default)修飾。
n 使用private的影響為避免被實體化(instantiates)。
n 可以overloading constructors來定義一個以上的constructors。
n constructor可以丟出Exception。
不可以
n constructor不能有回傳值、也不能夠被繼承。
n 不能overriding constructors。
n constructor內不可以同時有this(...)或super(...)。
注意
n constructor不會被繼承,如果自己沒有寫constructor,compiler時會加入default constructor ,為一個no parameters and throws no exceptions,其存取權限將與class相同。特別注意,若已定義constructor後,compiler就不會再給default constructor。
n 在繼承的情況下,如果superclass的constructor有定義Exception in the throws clause,那麼他的subclass也必須定義Exception in the throws clause。
来自:【 Garfield 的 SCJP 閱讀筆記 】