質問: JAVAのオブジェクト指向を勉強・練習している者です。 説明が下手ですいませんが、「スッキリわかるJava入門 第2版 (スッキリシリーズ) 」の(P357)「暗黙のコンストラクタ」のところを復習を兼ねて読み直しているのですが、 > > 実はJavaでは、すべてのクラスはインスタンス化に際して、**必ず何らかのコンストラクタを実行すること**になっています。ですから、**本来すべてのクラスは、**「引数のない、何も処理をしないコンストラクタ」でよいので、**最低でも1つ以上のコンストラクタ定義を持っていなければなりません。**コンストラクタが一つも定義されてないクラスは許されないのです。 > > > と書かれていたのですが、 1.なぜインスタンス化する際に**コンストラクタが必ずないとダメ**なのですか? 2.「引数なし、処理内容なし」のコンストラクタ(**デフォルトコンストラクタ)に入る初期値**はintの場合だと0などの**何もない感じの値**が入るのでしょうか? よろしくお願いします。
回答: > > なぜインスタンス化する際にコンストラクタが必ずないとダメなのですか? > > > 何らかのデータを格納するためのメモリ領域を確保したら、速やかにその領域に意味ある値を設定するのはよい作法であることが過去の経験上分かっています。 Javaはその言語仕様として、コンストラクタでその「よい作法」を強制するようにしている。ということです。この言語仕様は「縛り」ではなく、より良いコーディングを促すための仕組みです。 > > 「引数なし、処理内容なし」のコンストラクタ(デフォルトコンストラクタ)に入る初期値はintの場合だと0などの何もない感じの値が入るのでしょうか? > > > そうです。しかし、その挙動に頼ったコーディングをするべきではありません。