1. 程式人生 > >Java中子類與父類的構造方法的呼叫關係

Java中子類與父類的構造方法的呼叫關係

        在 Java 中,無論是 explicit 還是 implicit 方式,都要求在子類的構造方法中呼叫其父類的構造方法。如果父類無構造方法(其實是一個預設無參的構造方法),那麼子類的構造方法中會自動進行呼叫;如果 父類有自己的構造方法(這時父類不會有預設無參的構造方法),那麼在子類的構造方法中,必須要呼叫父類的某個構造方法,而且必須是在構造方法的第一個語句 中進行呼叫。

        究其原因,想必是 Java 語言設計者,要求子類有責任保證它所繼承的父類儘快進入到一個穩定、完整的狀態中。試想,如果沒有這個約束,那麼子類的某個繼承自父類的方法可能會使用到父類中的一些變數,而這些變數並沒有進行初始化,從而產生一些難以預料的後果,因此構造子類的物件前,必須構造父類的物件,並將之隱含於子類物件之中,使用關鍵字super引用父類物件。

        也因此,當一個類的構造方法是 private 時,它是不可被 extends 的,因為子類構造方法難以呼叫到這個父類的構造方法。