戻り値の型を書いた「コンストラクタ」
出力はどれか。
public class Main {
public static void main(String[] args) {
System.out.println(new Item().name);
}
}
class Item {
String name = "none";
void Item() {
name = "item";
}
}
- A
none - B
item - C コンパイルエラーになる
- D
null
正解と解説を見る
正解: A
- A:
void Item()は戻り値があるので普通のメソッドで、new では呼ばれません。name は "none" のままです。 - B:
void Item()はコンストラクタではないので、new したときに呼ばれません。 - C: クラスと同じ名前のメソッドも、文法上は定義できます。
- D: name は宣言時に "none" で初期化されています。
ポイント
void Item()は戻り値の型があるので、コンストラクタではなく普通のメソッドです。new したときには呼ばれません。