オブジェクトとは

 設計図を基に実物を作ることにより、使用することができるようになります。オブジェクト指向プログラミングの世界でも同じように、クラスを基にオブジェクトを作ることにより、コンピュータ上で動かすことができるようになります。これから見るのは、あらかじめ定義されているクラスを基に、メモリ上にオブジェクトを配置して使用する方法です。この作業は次の図のように表すことができます。

インスタンス生成
インスタンス生成

 上図にあるように、クラスを基にオブジェクトを作成することを、「インスタンス生成」と呼びます。それによりできあがった“モノ”がオブジェクトまたは、インスタンスとも呼ばれます。この手順を踏むことにより利用することができるようになるわけです。

インスタンス生成の書式
クラス名 インスタンス変数名;
変数名 = new クラス名(引数リスト);

クラス名 インスタンス変数名 = new クラス名(引数リスト);

ファイル名 Run1.java

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. import java.io.*;
  2. public class Run1{
  3.  //車の状態を表示するメソッド
  4.  public static void showData(Car car){
  5.   System.out.println("スピード:" + car.speed + "km");
  6.   System.out.println("ガソリン:" + car.gas + "L");
  7.  }
  8.  public static void main(String[] args) throws Exception{
  9.   //インスタンスを生成する
  10.   Car car = new Car();
  11.   //フィールド変数を初期化する
  12.   car.speed = 0;
  13.   car.gas = 20.0;
  14.   //現在の状態を表示する
  15.   showData(car);
  16.   //キーボード入力の準備をする
  17.   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  18.   while(true){
  19.    //操作を入力
  20.    System.out.print("1)加速 2)減速 9)終了:");
  21.    String inputdata = br.readLine();
  22.    //操作によって分岐する
  23.    switch (inputdata){
  24.     case "1":
  25.      //加速する
  26.      car.speedUp(5);
  27.      showData(car);
  28.       break;
  29.      case "2":
  30.       //減速する
  31.       car.speedDown(5);
  32.      showData(car);
  33.      break;
  34.     case "9":
  35.      //プログラムを終了する
  36.      return;
  37.    }
  38.   }
  39.  }
  40. }

○ コンパイル

C:¥work>javac Run1.java

C:¥work>

○ 実行結果

C:¥work>java Run1
スピード:0km
ガソリン:20L
1)加速 2)減速 9)終了:1
スピード:5km
ガソリン:19.5L
1)加速 2)減速 9)終了:1
スピード:10km
ガソリン:19L
1)加速 2)減速 9)終了:2
スピード:5km
ガソリン:19L
1)加速 2)減速 9)終了:9
(終了)

○ 解説

 5~8行目はshowDataメソッドを定義しています。このメソッドはCarオブジェクトを受け取り、そのオブジェクトのスピード情報とガソリン残量を表示します。

 12行目ではCarオブジェクトを生成しています。そして、15~16行目で生成したオブジェクトのフィールドを初期化しています。

 24~45行目は無限ループになっています。メニューが表示され、入力されたメニュー番号に応じて処理されます。加速を選択すると、33行目でCarオブジェクトのspeedUpメソッドを呼び出し、加速します。減速を選択すると、38行目でCarオブジェクトのspeedDownメソッドを呼び出し、減速します。それぞれの処理をした後にshowDataメソッドを呼び出して、現在のCarオブジェクトの状態を表示します。メニューで終了を選択するとプログラムが終了します。

インスタンス生成のイメージ
インスタンス生成のイメージ

前へ   次へ