車の設計図となるクラスを作成し、メインクラスで車を生成し、その車を走らせる
目標:インスタンスとクラスの違いを理解する
クラスとは、製品の設計図のようなもの
例えば、現実世界で車の設計図を作るとすると、以下のようになると思います。
特徴、部品 | 動き、仕様(メソッド) |
---|---|
名前 | 名前がある |
色 | 色がある |
燃料 | 燃料を追加することができる |
走行距離 | 走るにつれて移動距離が増える |
走るにつれて燃料が減る |
クラスとは、設計図のことを指します。 または、ある実体を実体を生成するために定義された概念のようなもの。 フィールドは、実体が持つ部品や特徴のことを指します。 メソッドは、実体ができる動きや仕様のことを指します。
車の設計図を、クラスに落とし込むと、以下のようになります。
Carクラス
public class Car { private String name; private String color; //燃料と走行距離の初期値は0とする private int fuel = 0; private int distance = 0; //車の名前を設定する public void setName(String name) { this.name = name; } //車の色を指定する public void setColor(String color) { this.color = color; } //車の燃料を給油する(ここでは、単位はリットルとする) public void setFuel(int fuel) { this.fuel += fuel; } //車を走らせる。走行距離の分だけ燃料が減る(ここでは、1キロ走ると1リットル燃料が減るとする) public void run(int distance) { this.fuel -= distance; this.distance += distance; } }
インスタンスとは、設計図を元に作成された実体のこと
しかし、車の設計書だけでは車は動きません。 実際に動く車を生成する必要があります。
つまり、クラスだけある状態だと、設計書だけある状態なので、 何も起こらないため、実際に動く実体を作るというわけです。
その実体のことを、インスタンスと言います。
また、実際に車を動かすのにも、設計書だけでは足りません。 上記のCarクラス内のメソッドでは、指示出しは行なっていません。 どのように動くのか、指示を出すためのメソッドが必要です。
この記事では、メインクラスを作成し、
インスタンスの生成、インスタンスへの指示は、
public static void main (String args[]){
}
というメソッド内で行わうよう設定します。
public = 外に公開している static = 静的な(インスタンスがなくても指示できる。逆に、上記Carクラスのメソッドはstaticがないので、指示する際にはインスタンス名.メソッド名()とする必要があります。) void = 戻り値のない (String args[]) = String配列を引数にもつ mainという名前のメソッド
車を生成し、 名前(車種)をフェラーリで赤色に指定して、 100リットル給油した後に40キロ走らせるよう指示を出すと、 以下のようになります。
public class Main { public static void main(String[] args) { // ferrariというCarクラスのインスタンスを生成 Car ferrari = new Car(); //インスタンスferrariの名前(車種)を「Ferrarri」と設定 ferrari.setName("Ferrari"); //インスタンスferrariの色を赤色に設定 ferrari.setColor("red"); //インスタンスferrariに100リットル給油 ferrari.setFuel(100); //インスタンスferrariに40キロ走らせる ferrari.run(40); } }