オブジェクトを扱うにはそのオブジェクトがどういうものかを決めておく必要があります。例えば銀行口座であれば人によって残高は違うでしょうが引き出す、預けるなど操作は決まっています。このどの銀行口座でも決まっていることが定義されたものをクラスと呼びます。クラスとはオブジェクトを扱う雛形になります。
クラスとは
classという英語は「学級」「階級」「部類」などという意味がありますがJavaでのクラスは「同じオブジェクトとして扱って良いもの」という意味になります。同じクラスであれば同じ操作ができるということです。
クラスの定義
では銀行口座というクラスを定義します。まず銀行口座に求める特徴を書き出します。
- 口座番号と名義人と残高の情報がある
- 引き出した金額分残高が減少する
- 預け入れた金額分残高が増加する
- 一定期間経過すると利子がつく
- 振込をするとその金額分残高が減少し他の銀行口座の残高が増加する
- 振込を受けるとその金額分残高が増加し他の銀行口座の残高が減少する
- 操作によっては手数料が引かれる
Javaのコードで定義を書き出す
まず銀行口座には口座番号と名義人と残高があることをJavaで記述します。
class BankAccount {
String account_number;
String account_name;
int amount;
}
このコードをBankAccount.javaというファイルに記述します。クラス名とファイル名は同じにする必要があります。
まずクラスの定義であることを示すclassという記述して、その後にクラス名を書きます。ここではBankAccountとしています。{ }で囲まれた内側にこのクラスが持つ変数を宣言します。ここでは口座番号 account_number と名義人 account_name をString型で、残高 amount をint型で宣言しました。これらクラスが内部に持っている変数をフィールド変数と呼びます。
これで上で書き出した最初の特徴を盛り込んだクラスの定義ができました。実際に使うにはこのクラスを雛形に操作する対象を作ります。この実際に操作する対象をインスタンスと呼びます。インスタンスは「実例」「事例」という意味です。
インスタンスを作るには以下のようにします。
BankAccount my_account = new BankAccount();
実際に操作する
では実際に操作してみましょう。Javaが最初に呼び出すメソッドはmainというメソッドでした。
class BankAccount {
String account_number;
String account_name;
int amount;
public static void main(String[] args){
BankAccount my_account = new BankAccount();
my_account.account_number = "01234567";
my_account.account_name = "口座太郎";
my_account.amount = 1000;
System.out.println(
"口座番号" + my_account.account_number +
" 名義人" + my_account.account_name +
"の口座の残高は " + my_account.amount + "円です。");
}
}
私の口座とあなたの口座を作ってそれぞれ1000円と2000円を残高として設定して出力します。フィールド変数の値はインスタンスの名前にピリオドを挟んでフィールド名を指定します。
mainメソッドはstaticメソッドといういつ呼び出しても同じ動作をするメソッドなのでクラスの定義に影響を与えません。
このクラスをコンパイルして実行すると以下のように出力されます。
口座番号01234567 名義人口座太郎の口座の残高は 1000円です。
次回はクラスの定義についてもう少し説明します。