• 締切済み

継承における暗黙のデフォルトコンストラクター

”継承の際、スーパークラスで引数なしのコンストラクターが省略せずにきちんと記述されるなら、そのサブクラスでコンストラクターを記述しなくても、スーパークラスの引数なしのコンストラクターが受け継がれるためコンパイルエラーがおきない。”のは分かりますが”スーパークラスで引数なしのコンストラクターが省略され、かつサブクラスでコンストラクターを省略した場合”はなぜコンパイルエラーがおきるのでしょうか? 暗黙の内にスーパークラスにコンストラクターが生成され、それがサブクラスに受け継がれることは出来ないのでしょうか? 宜しく願います。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

後者の「スーパークラスで引数なしのコンストラクターが省略され、かつサブクラスでコンストラクターを省略した場合」というのは「スーパークラスで引数を持つコンストラクタが宣言されている」ということでいい? もしそうなら, デフォルトコンストラクタは自動生成されないはず. というか, むしろ自動生成されたら困る. で, サブクラスで自動生成されるデフォルトコンストラクタは「スーパークラスのデフォルトコンストラクタを呼び出す」から, エラーになる. ついでにいうと, コンストラクタは「受け継がれる」ものではないです.

関連するQ&A