Developer

【はじめてのJava】インスタンス変数【オブジェクトとクラス編】
2021.02.20
Lv1

【はじめてのJava】インスタンス変数【オブジェクトとクラス編】

はじめてのJava

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


オブジェクトとクラス編

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

前回は「インスタンス」について扱いました。

今回は「インスタンス変数」について扱っていきます。


目次


インスタンス変数

 インスタンス変数 は変数の一種で、個々のインスタンスごとに固有の変数のことです。「フィールド」や「メンバ変数」とも呼ばれます。

クラスを作るところから順を追って考えていきましょう。

クラスを作るときにはクラスの「属性」と「操作」にどんなものがあるかを考えます。例えば車の場合は以下のようなイメージです。

「属性」と「操作」が挙げられたら、それを基に「変数」と「メソッド」を決めていきます。このように、クラスの変数やメソッドを決めていくことをクラスを定義すると言います。

今回は「操作(メソッド)」はおいておいて、属性を基に変数について定義していきましょう。属性だけを抜き出すと以下のようになります。

この属性をそのまま素直に変数として置き換えます。

これで完成、と言いたいところですが、Javaでは変数にはデータ型が必要になります。そこで、各変数のデータ型を決めます。どんなデータ型がいいかは、その変数の用途に合わせて決めていきます。今回は以下のように決めましょう。

これで、3つの変数「speed」「number」「color」を持ったCarクラスが定義できました。

Carクラスをインスタンス化する様子を図で表すと、次のようになります。

この図から、先ほどの「speed」「number」「color」はそれぞれのインスタンスごとに異なった値を持つことが分かると思います。

このように、個々のインスタンスがそれぞれの値を保有するような変数が「インスタンス変数」です。


サンプルソース

上の例に合わせた形でサンプルソースを記載しておきます。前回と比較して、今回説明していないメソッドの部分を削除してあります。

そのため今回は実行しても何も起こりません。

【注意】コマンドプロンプト上でコンパイル、実行する場合は、ソースコードを保存するときに コマンドプロンプトと同じ文字コードで保存してください。 通常はメモ帳ならANSI、サクラエディタならSJISを選択すればOKです。

Carクラス

class Car{
  double speed; //速さ
  int number; //ナンバー
  String color; //色
}

MyCarDriveクラス

public class MyCarDrive{
  public static void main(String[] args){
    Car myCar = new Car(); 
  }
}

2つのクラスはバラバラのファイルに書いてOKです。その場合は、必ず同じフォルダ内に2つのCar.javaとMyCarDrive.javaを作成してください。また、コンパイルはCar.javaを先に行ってください(最近のJavaであれば、MyCarDriveを先にコンパイルしても動くはずですが、念のためCar.javaを先にコンパイルしてください)。

同じファイルにCarクラスとMyCarDriveクラスを書く場合、ファイル名はpublicがついている方を優先してMyCarDrive.javaにしてください。


まとめ

クラスの変数やメソッドを決めることを「クラスを定義する」という。
個々のインスタンスがそれぞれの値を保持する変数を「インスタンス変数」という。


次回

次回はstatic変数について詳しく触れていきます。


はじめてのJavaシリーズの目次はこちら
プログラムの作り方編はこちら


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