カプセル化
出力はどれか。
public class Main {
public static void main(String[] args) {
Temp t = new Temp();
t.setCelsius(-300);
t.setCelsius(25);
System.out.println(t.getCelsius());
}
}
class Temp {
private int celsius;
int getCelsius() { return celsius; }
void setCelsius(int c) {
if (c < -273) return;
celsius = c;
}
}
- A
25 - B
-300 - C
0 - D コンパイルエラーになる
正解と解説を見る
正解: A
- A: -300 は setter のチェックで受け付けられず、25 だけが設定されます。
- B: setter で -273 より小さい値は無視されます。
- C: 25 は受け付けられるので 0 のままにはなりません。
- D: getter と setter を通すのは正しい書き方です。
ポイント
- フィールドを private にして、メソッド経由でだけ値を変えられるようにすることをカプセル化といいます。
- 不正な値 (-300) を受け付けないようにできます。