main のオーバーロード
出力はどれか。
public class Main {
public static void main(String[] args) {
System.out.print("A");
main("x");
}
public static void main(String s) {
System.out.print("B" + s);
}
}
- A
ABx - B
A - C
Bx - D コンパイルエラーになる
正解と解説を見る
正解: A
- A: 開始点の main が A を出力し、その中から main("x") で2つ目の main を呼んで Bx を出力します。
- B:
main("x")で2つ目の main も呼ばれるので、Bx も出力されます。 - C: 最初に呼ばれるのは
String[]を受け取る main なので、A が先に出力されます。 - D: 引数の型が違うので、main という名前でもオーバーロードできます。
ポイント
- main という名前のメソッドもオーバーロードできます。開始点として呼ばれるのは
String[]を受け取るものだけです。 - 2つ目の main は、普通のメソッドとして呼び出されています。
「main メソッドを持つ実行可能な Java プログラムの作成」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)