コンストラクターは継承されません。C
引数を取るコンストラクタを宣言する必要があります。適切なスーパークラス コンストラクターを呼び出す必要があります (デフォルトのスーパークラス コンストラクターを呼び出したくない場合)。
宣言を避けることができる唯一のコンストラクターは、デフォルトの引数なしのコンストラクターであり、コンストラクターを宣言しない場合にのみ使用されます。これは、コンストラクターが宣言されていない場合、コンパイラーがコンストラクターを生成するためです。スーパークラス コンストラクターを明示的に呼び出さない限り、コンパイラは常に既定のスーパークラス コンストラクターへの呼び出しを挿入します。
スーパークラス コンストラクターを明示的に呼び出さず、スーパークラスに既定のコンストラクターがない場合は、コンパイル エラーが発生することにも注意してください。
編集:「クラス C のようなクラスがたくさん」ある場合、多くのコンストラクターを記述する代わりに、ファクトリ メソッド patternを使用します。すべてのクラスにデフォルトのコンストラクターを実装させinit()
、標準の引数セットを受け取る個別のメソッドを提供できます。ファクトリ メソッドは、Class<? extends C>
オブジェクトといくつかの初期化引数を受け取り、(既定のコンストラクターを使用して) 新しいインスタンスを生成し、初期化引数を使用してそのinit
メソッドを呼び出します。init
そうすれば、特別な処理が必要なサブクラスのメソッドをオーバーライドするだけで済みます(常に を呼び出すことを忘れないでsuper.init
ください)。