MENU

【Java Silver】オブジェクトのフィールドへの読み取りと書き込みを理解する

今日はオブジェクトのフィールドについて学ぶ練習問題を解いてみましょう。

問題

以下のコードを実行すると、どの値が出力されるでしょうか?

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が格納され、その値が出力されます。

目次