プロが教えるわが家の防犯対策術!

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 =

以上です。回答の程よろしくおねがいします。

A 回答 (2件)

コンストラクタには戻り値がありません。


void O() は、コンストラクタではなく、O()というメソッドとして扱われます。
ですので、(2)のOクラスは明示的にコンストラクタを定義していないとみなされて、デフォルトコンストラクタが呼び出されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/19 19:37

コンストラクタはvoidあったらダメ。


つまり(2)の
void O()
はコンストラクタじゃない。
それが理由。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/19 19:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!