コンストラクタの役割
- インスタンス生成時、そのインスタンスが他の場所で使われる前に初期化処理をしてくれる
コンストラクタのルール
- コンストラクタ名はクラス名と同じ
- 戻り値は指定できない
- 呼び出されるタイミングはインスタンス生成時のみ
デフォルトコンストラクタ
- コンストラクタがないとインスタンスの初期化処理ができない。よって、明示的にコンストラクタを定義していない場合(コードを書いていない)、コンパイラが自動的に引数のないコンストラクタを生成してくれる
コンストラクタのオーバーロード
- 引数ありのコンストラクタを記述することができる
- その場合、引数なしコンストラクタからthis()を使って、呼び出すことが可能
- this()はデフォルトコンストラク内の1行目に記述しなければならない
スーパークラス・サブクラスのコンストラクタの実行のタイミング
継承関係のスーパークラスとサブクラスがあるとき、サブクラスのインスタンスを生成すると、両クラスのコンストラクタが実行される。(*この仕組みはコンストラクタチェーンという)
<実行順序>
1.サブクラスのコンストラクタが呼び出される
2.スーパークラスのコンストラクタが呼び出される
3.スーパークラスのコンストラクタが実行される
4.サブクラスのコンストラクタが実行される
public class Child extends Parent {
public Child() {
super();
}
}
上のコードのようにコンパイル時にサブクラスのコンストラクタの1行目でスーパークラスのコンストラクタ呼び出しが行われる。