別のクラスの private フィールド
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
System.out.println(new Secret().value);
}
}
class Secret {
private int value = 42;
}
- A
42と出力される - B
0と出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: 実行まで進まないので、何も出力されません。
- B: 実行まで進まないので、何も出力されません。
- C: アクセスの誤りはコンパイル時に見つかります。
- D: private なフィールドは別のクラス (Main) から使えないので、コンパイルエラーです。
ポイント
| 修飾子 | 使える範囲 |
|---|---|
public | どこからでも |
protected | 同じパッケージ + サブクラス |
| (なし) | 同じパッケージ |
private | 同じクラスの中だけ |