こんにちは。「Javaを復習する初心者」です。
今回はEclipseでJava入門です。前回3回目はメソッドを使って、税込み価格を計算しました。特に商品名ということは考えずに、独立して価格という値のみを扱ってました。今回は商品名と価格をひとまとめに扱うことが可能なクラスという機能を使ってみます。関連ある変数をひとまとめにしましょうという回です。
商品名と価格の組
商品名は文字列です。文字列を扱う型でString型というクラスがあります。使い方は「String s = “Hello”;」という書き方です。lesson1で扱った「Hello World.」を出力するプログラムは次のようにも書けます。
ソース mainメソッドの中身
String s = "Hello World.";
System.out.println(s);
この時点で、商品名Aと価格100円を変数を使って、「A: 100円」と出力するプログラムを考えてみます。lesson1の最後の方で触れましたが、System.out.printlnの括弧の中で、以下のようにプラス記号を使って次のように書きます。
ソース mainメソッドの中身
String name = "A";
int price = 100;
System.out.println(name + ": " + price);
それでは、商品B、200円も追加したらどうなるでしょうか。この時点では以下のように変数を増やすと思います。
ソース mainメソッドの中身
String name1 = "A";
int price1 = 100;
String name2 = "B";
int price2 = 200;
System.out.println(name1 + ": " + price1);
System.out.println(name2 + ": " + price2);
クラスを使う
上記のような書き方もありますが、商品名と価格をひとまとめにして扱うことがクラスという機能によって可能です。
lesson4パッケージを作成し、Item.javaを新規作成してください。内容は以下です。
ソース
package lesson4;
public class Item {
public String name;
public int price;
}
上記ではItemクラスを定義しています。「Item」がクラス名でファイル名と一致している必要があります。「public String name;」と「public int price;」ではnameとpriceという変数を定義しているのみです。この変数はフィールドと呼ばれます。詳しくは触れませんが、そのような呼び方があります。
このjavaファイルはItemというクラスの「雛形」を定義しています。このファイルのみでは実行するということはありません。
先ほどの商品Aと商品Bの例は次のように書き換えることができます。lesson4パッケージにShowPrice.javaを新規作成し、以下を実行してみてください。
ソース
package lesson4;
public class ShowPrice {
public static void main(String[] args) {
Item item1 = new Item();
item1.name = "商品A";
item1.price = 100;
Item item2 = new Item();
item2.name = "商品B";
item2.price = 200;
System.out.println(item1.name + ": " + item1.price);
System.out.println(item2.name + ": " + item2.price);
}
}
結果
商品A: 100
商品B: 200
javaファイルは以下の図のようになっていると思います。Item.javaはShowPrice.javaから呼び出されて使用されます。
Item.javaで定義したクラスは「雛形」です。「Item item1 = new Item();」という書き方で「実体」を変数に格納できます。クラス名を変数の型として宣言できます。後半の「new Items();」は「雛形」から「実体」を作るときの書き方です。クラスと変数の関係は以下の図のようになります。
nameとpriceという2つの箱を持つItemという雛形があり、item1、item2という変数に実体を格納しています。この実体をインスタンスと言います。今回の例では2つのインスタンスを作成し、それぞれのフィールドを使用して、商品名と価格を表示しています。[インスタンス名].[フィールド名]という書き方をます。
以上のように、クラスを使うと関連ある変数をまとめることができます。