同じパッケージから protected を使う
出力はどれか。
public class Main {
public static void main(String[] args) {
Account acc = new Account();
acc.deposit(50);
System.out.println(acc.balance);
}
}
class Account {
int balance = 100;
protected void deposit(int v) {
balance += v;
}
}
- A
150 - B
100 - C コンパイルエラーになる
- D 実行時に例外が発生する
正解と解説を見る
正解: A
- A: protected は同じパッケージから使えるので deposit が呼ばれ、100 + 50 = 150 です。
- B: deposit が呼ばれて balance が増えています。
- C: 同じパッケージのクラスからは protected メンバを使えます。
- D: 正しいコードなので例外にはなりません。
ポイント
- protected は同じパッケージとサブクラスから使えます。修飾子なしも同じパッケージなら使えます。