• ベストアンサー

JAVAコンストラクタについて

JAVA のコンストラクタ定義の際に、下記のようにコンストラクタにvoidを付けた時と付けない時の処理結果が変わるのはなぜでしょうか。 (1) class O { protected int d; O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } (2) class O { protected int d; void O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } 実行結果 (1) O = 0 O = (2) O = 以上です。回答の程よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yaguma
  • ベストアンサー率57% (4/7)
回答No.2

コンストラクタには戻り値がありません。 void O() は、コンストラクタではなく、O()というメソッドとして扱われます。 ですので、(2)のOクラスは明示的にコンストラクタを定義していないとみなされて、デフォルトコンストラクタが呼び出されます。

ride666
質問者

お礼

すばやい回答ありがとうございますww (2)はコンストラクタではないのですね 勉強になりました。

その他の回答 (1)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

コンストラクタはvoidあったらダメ。 つまり(2)の void O() はコンストラクタじゃない。 それが理由。

ride666
質問者

お礼

回答ありがとうございますww >コンストラクタはvoidあったらダメ。 今まで知りませんでした。orz