「Java言語」の「クラス」を学ぶ
よくわからないまま勉強した気になっていた「クラス」が出てきました(^_^;)
ここから、真剣に勉強しないとこの先の学習が進めなくなりそうなので、じっくりと時間を掛けて勉強しないといけないですね。
それでは、「Javaのクラス」について学んでいきたいと思います。
クラス
「クラス」は「フィールド」と「メソッド」を持つことができるのですが、「フィールド」は、クラス内に作れる「変数」のことです。
クラスの定義
クラスの作り方は、
class クラス名 { フィールド メソッド }
のようになります。/p>
何か「クラスのテーマ」になるものを元に「クラス名・フィールド名・メソッド名」などを決めていくのですが、今回は「ハンバーガーショップ」をテーマにしたいと思います。
このテーマを選んだ理由は「自分がハンバーガーが好きだから」っていう理由なので、特に深い意味はありません(__)
では、さっそく「ハンバーガーショップクラス」を作ってみたいと思います。
このクラスを実際に作ってみると
public class HamburgerShop { int money = 0; //現金 int hamburgerStock = 100; //ハンバーガーの在庫数 int cheeseBurgerStock = 100; //チーズバーガーの在庫数 int teriyakiBurgerStock = 100; //てりやきバーガーの在庫数 final int HAMBURGER_PRICE = 320; //ハンバーガーの価格 final int CHEESE_BURGER_PRICE = 380; //チーズバーガーの価格 final int TERIYAKI_BURGER_PRICE = 420; //てりやきバーガーの価格 //ハンバーガーを販売 public void sellHamburger() { this.hamburgerStock--; //ハンバーガーの在庫を1減らす this.money += this.HAMBURGER_PRICE; //現金を320円増やす } //チーズバーガーを販売 public void sellCheeseBurger() { this.cheeseBurgerStock--; //チーズバーガーの在庫を減らす this.money += this.CHEESE_BURGER_PRICE; //現金を380円増やす } //てりやきバーガーを販売 public void sellTeriyakiBurger() { this.teriyakiBurgerStock--; //てりやきバーガーの在庫を減らす this.money += this.TERIYAKI_BURGER_PRICE; //現金を420円増やす } //お店のデータを表示 public void displayShopData() { System.out.println("===== 現金 ====="); System.out.println(this.money + "円"); System.out.println("===== 在庫 ====="); System.out.println("ハンバーガー:" + this.hamburgerStock); System.out.println("チーズバーガー:" + this.cheeseBurgerStock); System.out.println("てりやきバーガー:" + this.teriyakiBurgerStock); } }
のようになりました。(作り方が合っているのかはわからない・・・)
インスタンスの生成
クラスは「インスタンス」を作ることで、クラスが持っている「フィールド・メソッド」を利用することができます。
「インスタンス」を作るには、
クラス型 変数 = new クラス名();
と書くと「インスタンス」が変数に代入されます。
「ハンバーガーショップクラス」の「インスタンス」を作ってみると、
HamburgerShop hs = new HamburgerShop();
のようになります。
メソッドの実行
「hs変数」には、「ハンバーガーショップクラス」の「インスタンス」が入っています。
例えば、「メソッド」を実行する場合は、
変数名.メソッド名();
のように書いていきます。
「sellHamburger」メソッドを実行する場合は、
hs.sellHamburger();
のように書きます。
このメソッドを実行すると、ハンバーガーの在庫が減り現金が増えます。
次に現在の状況を確認するため、「displayShopData」メソッドを実行します。
hs.displayShopData();
メソッドの実行結果は、
===== 現金 ===== 320円 ===== 在庫 ===== ハンバーガー:99 チーズバーガー:100 てりやきバーガー:100
のようになります。
フィールドへのアクセス
フィールドには、ハンバーガーの「在庫」を表す変数やハンバーガーの価格を表す「定数」を作っています。
これらのフィールドは、「メソッド」内で利用していますが、メソッドの中で自クラスのフィールドを参照するには、
this.フィールド名
のようにプログラムを書いていきます。
「this」キーワードは「自クラスの」という意味を表しています。
このプログラムの場合は「this」キーワードを省略してもプログラムは実行することができます。
「sellHamburger」メソッドでは、
//ハンバーガーを販売 public void sellHamburger() { this.hamburgerStock--; this.money += this.HAMBURGER_PRICE; }
の部分で利用しています。
クラスは「インスタンスの元」になる情報のため、
「料理のレシピ」が「クラス」で、「料理のレシピ」を元に作った「料理」が「インスタンス」と捉えるとわかりやすそうです。
「動画」は1~2分くらいのショートムービーなので、自分の「復習用」としても活用していたりします。
最近は「寝る前にどれか1本動画を見て寝るというパターン」のプログラミング学習ライフを送っているので、少しずつ学んだ内容も記憶に定着してきている実感が出るようになってきました(^^)/