static メソッドからインスタンスメソッドを呼ぶ
このコードを実行するとどうなるか。
public class Main {
void hello() {
System.out.println("hello");
}
public static void main(String[] args) {
new Main().hello();
hello();
}
}
- A
helloが2回出力される - B
helloが1回出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: 実行まで進まないので、何も出力されません。
- B: 実行まで進まないので、何も出力されません。
- C: static の誤りはコンパイル時に見つかります。
- D:
new Main().hello()は呼べますが、static な main からhello()を直接呼ぶとコンパイルエラーです。
ポイント
new Main().hello()のようにインスタンス経由なら呼べますが、static メソッドからhello()を直接は呼べません。