今日はオブジェクトのフィールドについて学ぶ練習問題を解いてみましょう。
問題
以下のコードを実行すると、どの値が出力されるでしょうか?
class Car {
private int speed;
Car(int speed) {
this.speed = speed;
}
int getSpeed() {
return speed;
}
void setSpeed(int speed) {
this.speed = speed;
}
}
public class Test {
public static void main(String[] args) {
Car car = new Car(60);
car.setSpeed(80);
System.out.println(car.getSpeed());
}
}
選択肢
- A. 60
- B. 80
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
B. 80
解説
解説のポイント:
- クラスのフィールドの設定と取得
- コンストラクタの役割とメソッドの使用
まず、オブジェクトのCar
クラスのフィールドであるspeed
は、private
として隠蔽されています。そのため、クラス外から直接アクセスすることはできません。このために、getterメソッドとsetterメソッドが提供されています。
このコードでは、Car
クラスのコンストラクタはint speed
を引数に取り、インスタンスのspeed
フィールドを設定します。この場合、初期値は60です。しかし、setSpeed
メソッドを用いてspeed
を80に変更しています。
最後にgetSpeed
メソッドを呼び出し、セットされた新しい速度80が出力されることになります。Setterによってフィールドの値を変えたため、新しい値80が格納され、その値が出力されます。