- ベストアンサー
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 = 以上です。回答の程よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
コンストラクタには戻り値がありません。 void O() は、コンストラクタではなく、O()というメソッドとして扱われます。 ですので、(2)のOクラスは明示的にコンストラクタを定義していないとみなされて、デフォルトコンストラクタが呼び出されます。
その他の回答 (1)
- askaaska
- ベストアンサー率35% (1455/4149)
コンストラクタはvoidあったらダメ。 つまり(2)の void O() はコンストラクタじゃない。 それが理由。
お礼
回答ありがとうございますww >コンストラクタはvoidあったらダメ。 今まで知りませんでした。orz
お礼
すばやい回答ありがとうございますww (2)はコンストラクタではないのですね 勉強になりました。