Developer

【はじめてのJava】インスタンス変数の使い方(値の利用)【オブジェクトとクラス編】
2021.02.21
Lv1

【はじめてのJava】インスタンス変数の使い方(値の利用)【オブジェクトとクラス編】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


オブジェクトとクラス編

オブジェクトとクラス編では、Javaを扱う上で非常によく出てくる「オブジェクト」や「クラス」について扱っていきます。

前回は「インスタンス変数への値の代入方法」について扱いました。

今回は「インスタンス変数に代入されている値の使い方」を扱っていきます。


目次


インスタンス変数の使い方

前回扱った通り、インスタンス変数は インスタンス化を行うことで利用できるようになります 。インスタンス化の詳しい方法はこちらの記事を参照してください。


インスタンス変数の値を利用する

インスタンス変数の値の利用方法を説明していきます。前回書いたCarクラスを引き続き使って説明していきます。前回書いたソースコードは以下の通りです。

Car.java

class Car{
  double speed;
  String color;
}

MyCarDrive.java

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 30.0; //myCarのspeedを30.0にしている
    myCar.color = "red"; //myCarのcolorを"red"にしている
  }
}

前回のMyCarDriveの以下の部分でmyCarのインスタンス変数に値の代入が行われています。

Car myCar = new Car(); //Carクラスをインスタンス化している
myCar.speed = 30.0; //myCarのspeedを30.0にしている
myCar.color = "red"; //myCarのcolorを"red"にしている

図にすると以下のような状態です。

今回はこの値を画面に表示して確かめたいと思います。

なお、今回のサンプル全般はカプセル化と呼ばれる観点で考えると望ましい方法ではありません。ただし、いきなりカプセル化を考えるとソースコードが煩雑になり、一度に考える内容が多くなりすぎますので、今回はカプセル化は考慮せずに説明をします。カプセル化について詳しくはアクセス修飾子と呼ばれる部分で扱うこととします。


インスタンス変数を値利用する

インスタンス変数の値を利用する場合は、利用したい箇所で以下のように書きます。

インスタンス名.インスタンス変数名

例えば、myCarのインスタンス変数であるspeedを画面に表示したい場合は、以下のように、System.out.println()の()の中に、myCar.speedと書きます。

System.out.println(myCar.speed);

 

同様にmyCarのcolorを表示する部分は以下のように書きます。

System.out.println(myCar.color);

 

これをMyCarDriveに組み込むと以下のようになります。

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 30.0; //myCarのspeedを30.0にしている
    myCar.color = "red"; //myCarのcolorを"red"にしている
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する
    System.out.println(myCar.color); //myCarのcolorを画面に表示する
  }
}

これをコンパイル、実行すると、次のようにmyCarのspeedやcolorが表示されます。


インスタンス変数に演算を実施してみる

インスタンス変数は演算に利用することもできます。例えば、myCarのspeedを10km/h加速したい場合を考えてみましょう。

下の図のような感じです。

このような場合、以下のように書けます。

myCar.speed = myCar.speed + 10.0;
//myCar.speed += 10.0; //こちらでもOK

 

これをMyCarDriveに組み込むと以下のようになります。
※speedが増加していることが分かるように、演算の前と演算後のspeedを画面に表示しています。

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 30.0; //myCarのspeedを30.0にしている
    myCar.color = "red"; //myCarのcolorを"red"にしている
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する
    System.out.println(myCar.color); //myCarのcolorを画面に表示する
    myCar.speed = myCar.speed + 10.0; //myCarのspeedを10.0だけ増加させる
    System.out.println(myCar.speed); //myCarのspeedを画面に表示する
  }
}

これをコンパイル、実行すると、次のようにmyCarのspeedが10増えていることが確認できます。


サンプルソース

今回のサンプルソースは次の通りです。

Car.java※前回から変更なしです。

class Car{
  double speed;
  String color;
}

MyCarDrive.java※【追加】となっている個所が、前回からの追加個所です。

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); //Carクラスをインスタンス化している
    myCar.speed = 30.0; //myCarのspeedを30.0にしている
    myCar.color = "red"; //myCarのcolorを"red"にしている
    System.out.println(myCar.speed); //【追加】myCarのspeedを画面に表示する
    System.out.println(myCar.color); //【追加】myCarのcolorを画面に表示する
    myCar.speed = myCar.speed + 10.0; //【追加】myCarのspeedを10.0だけ増加させる
    System.out.println(myCar.speed); //【追加】myCarのspeedを画面に表示する
  }
}

実行結果は以下の通りです。

インスタンス変数の値はこのように利用します。


まとめ

インスタンス変数の値を利用したい際には「インスタンス名.インスタンス変数名で利用できる。
インスタンス変数を利用して演算も実施できる。
(おまけ:「インスタンス名.インスタンス変数名」という利用方法は、カプセル化の観点からは好ましくない。)

次回

次回はインスタンス変数の初期値について考えていきたいと思います。


はじめてのJavaシリーズの目次はこちら
オブジェクトとクラス編はこちら


java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら