2 -10 : 継承クラスのコンストラクタ

コンストラクタを宣言する際は、メソッド内でスーパークラスのコンストラクタを実行する必要がある。スーパークラスのコンストラクタが引数なしのタイプ ExtParent() {} だけであれば、サブクラスのコンストラクタが自動的に内部で super() を実行するため記述する必要はないが、できるだけ記述した方がミスは防げる。スーパークラスがサンプルのように引数を利用するものだけの場合はサブクラスで super(Stirng str) の呼び出しが必要となるので注意する。実際の開発ではほとんどのクラスは引数なしでインスタンス化できるように宣言したほうがいい。

/**
* 継承クラスのコンストラクタ テストクラス
*/
class ExtParent {
String name;
ExtParent(String name) {
this.name = name;
}
}

public class ExtendsConstructor extends ExtParent {

// ExtParent コンストラクタは引数 String を
// 必要とする形式だけなので、
// ExtendsConstructor クラスコンストラクタでは
// super(String str) を呼び出す必要がある
ExtendsConstructor() {
super("tom"); // 必要
// super(); // コンパイルエラー
}

public static void main(String[] args) {
}
}