メソッド
メソッドを定義する
前回はメンバ変数を作成して、オブジェクトごとに変数を割り当て出力しました
今回はメソッドを作成してみたいと思います
メソッドはC言語などの「関数」、BASICなどの「サブルーチン、プロシージャ」的存在で、ステートメントの集合体です
私たちがこれまで使ってきたmain()メソッドを見れば明らかですね
メソッドもオブジェクトに対して定義されます(これが関数と大きく違う点です)
メソッドの宣言は、戻り値、メソッド名、パラメータリストで構成されます
type method-name(param) {
statements...
}
typeには戻り値の型を指定します
戻り値とは、そのメソッドが終了時に呼び出し元に対して返す値です
method-nameにはメソッド名を指定します
paramにはパラメータリストを指定します
パラメータは呼び出し元から何らかの値を受け取ることができるのです
受け取るパラメータがない場合は省略可能ですが、括弧は省略できません
宣言したメソッドにアクセスする方法は、メンバ変数同様です
前回のプログラムをメソッドを使って改良してみましょう
class neko {
String name;
int love;
void mes() {
System.out.println(name + "\t\t" + love);
}
}
class test {
public static void main(String args[]) {
neko rena = new neko();
neko yuki = new neko();
neko mimi = new neko();
rena.name = "レナ";
rena.love = 186;
yuki.name = "ユキ";
yuki.love = 549;
mimi.name = "ミミ";
mimi.love = 325;
System.out.println("名前\t\t好感度");
rena.mes();
yuki.mes();
mimi.mes();
}
}
クラス neko のmes()メソッドは、オブジェクトが格納しているメンバ変数を出力しています
このときのメンバ変数へのアクセスは、すでにオブジェクトが指定されているので変数名だけで可能です
mes()メソッドは、何も受け取らず何も返しません。これが、最も基本的なメソッドの作成です
では、パラメータを受け取ったり、値を返したりするメソッドを作成してみましょう
メソッドから呼び出し元に復帰するステートメントでreturnというものがあります
return value;
valueには値を指定します
valueで指定した値が呼び出し元に返されます
ただ関数を終わらせるだけの場合は、valueを省略して return; と記述してください
class CCS {
String name;
String method(String win) {
System.out.println("クロウの作りしカードよ、我の前に姿を示せ ");
System.out.println("契約のもと" + name + "が命じる");
System.out.println("レリーーーズ!");
System.out.println("風よ、戒めの鎖となれ" + win);
return "汝のあるべき姿にもどれ、クロウカーード!";
}
}
class test {
public static void main(String args[]) {
String return_var;
CCS sakura = new CCS();
sakura.name = "さくら";
return_var = sakura.method("ウィンディー!");
System.out.println(return_var);
}
}
main()メソッド内の sakura.method("ウィンディー!"); でメソッドを呼び出しています
このときメソッドにはString型の「ウィンディー!」という文字列が渡されています
これをmethod()メソッド側で win というString型変数を受け皿にして受け取ります
メソッド終了時に return ステートメントで文字列を返しています
これを今度はmain()メソッド側で return_var というString型変数で受け取っています
実行結果は次のようになりました
クロウの作りしカードよ、我の前に姿を示せ
契約のもとさくらが命じる
レリーーーズ!
風よ、戒めの鎖となれウィンディー!
汝のあるべき姿にもどれ、クロウカーード!
パラメータや戻り値の受け渡しに注目してください
このように、メソッドはオブジェクトに対して何らかの動作をするものなのです
return [expr]
メソッドを終了させ、呼び出し元に制御を戻します
このとき、メソッドの宣言で戻り値の型の指定がvoid以外ならば、その型に合った値を返します
expr - 省略可能です。呼び出し元に返す式を評価します