返り値なしのメソッドと返り値ありのメソッド
前述の■ [Java勉強会本コース]メソッドを用いる のメソッドは以下の通りである
void showProfile(){ //各フィールドの値をコンソール上に表示 System.out.println("*******第" + pId + "染色体の祖先染色体は*****"); System.out.println("第 " + pAncestor1 + " 染色体と第 " + pAncestor2 + " 染色体です"); System.out.println("第" + pId + "は" + pRecpoints + "にて組換えがおきてできた組換え体です"); }
このメソッド記述の先頭にある"void"とは、「返り値なし」を意味する。つまり、メソッドが返す値のデータ型は「ない="void"」である、ということである。
逆に言うと、「返り値あり」のメソッドの定義は、この"void"の位置にしかるべきデータ型(クラス?)を記載し、メソッド"returnString"の{}内に"return xxxx"という記述をして「返り値」をもたせればよいことになる。
今回は、返り値としてStringクラスであるような次のようなメソッドを定義してみた。
//返り値ありのメソッド String returnString(){ String returnValue; returnValue = pRecpoints; return returnValue; }
また、class returnValuetest{ }というクラス内で、このメソッドを用いて、すでに別の過程において、あるChromosomeクラスオブジェクト(myChrom3のフィールド(pRecpoints)に与えられている値を、"returnString"メソッドを用いて取得して、新規のChromosomeクラスオブジェクト(myChromR1)のpRecpointsフィールドに代入している。
Chromosome myChromR1 = new Chromosome(); myChromR1.pId="10(returntestID)";//便宜上pIdを与えている myChromR1.pRecpoints=myChrom3.returnString();
実行の結果のコンソール画面は次の通り。
C:\aokijava\day6-2>java returnValuetest myChromR1のpRecpointsにmyChrom3のそれを返り値つきメソッドで返し、、メソッドを介 して代入された値を含むChromosomeオブジェクトのフィールドの値を表示させる *******第10(returntestID)染色体の祖先染色体は***** 第 null 染色体と第 null 染色体です 第10(returntestID)は5 10にて組換えがおきてできた組換え体です C:\aokijava\day6-2>
このソース"Chromosome3.java"は、以下の通り
//Profile クラスの定義
class Chromosome {
//フィールドの定義
String pId; //ID
String pCategory; //カテゴリ('a' or 'b')
String pAncestor1; //第1アンセスター。5'端を持つアンセスター染色体
String pAncestor2; //第2アンセスター。組換え体の場合に、第2のアンセスター
String pForm1; //第1アンセスター染色体が父由来('p'か母由来('m')か
String pForm2; //第2アンセスター染色体が父由来('p'か母由来('m')か
String pRecpoints; //組換え発生点('5\t10\t40'は、5-6,10-11,40-41にて組換えがおきた結果、この染色体が出来上がったことを意味する
void showProfile(){
//各フィールドの値をコンソール上に表示
System.out.println("*******第" + pId + "染色体の祖先染色体は*****");
System.out.println("第 " + pAncestor1 + " 染色体と第 " + pAncestor2 + " 染色体です");
System.out.println("第" + pId + "は" + pRecpoints + "にて組換えがおきてできた組換え体です");
}//返り値ありのメソッド
String returnString(){
String returnValue;
returnValue = pRecpoints;
return returnValue;}
}
//テスト用クラスの作成
class UseChromosome {
public static void main(String args[]){//Chromosomeクラスのインスタンスを作成
Chromosome myChrom1 = new Chromosome();//Chromosomeクラスのフィールドに値を代入
myChrom1.pId="1";
myChrom1.pCategory="a";
myChrom1.pAncestor1="";
myChrom1.pAncestor2="";
myChrom1.pForm1="";
myChrom1.pForm2="";
myChrom1.pRecpoints="";//Chromosomeクラスのインスタンスを作成
Chromosome myChrom2 = new Chromosome();//Chromosomeクラスのフィールドに値を代入
myChrom2.pId="2";
myChrom2.pCategory="b";
myChrom2.pAncestor1="1";
myChrom2.pAncestor2="";
myChrom2.pForm1="";
myChrom2.pForm2="";
myChrom2.pRecpoints="";//Chromosomeクラスのインスタンスを作成
Chromosome myChrom3 = new Chromosome();//Chromosomeクラスのフィールドに値を代入
myChrom3.pId="3";
myChrom3.pCategory="b";
myChrom3.pAncestor1="1";
myChrom3.pAncestor2="2";
myChrom3.pForm1="f";
myChrom3.pForm2="m";
myChrom3.pRecpoints="5\t10";//メソッドを呼び出す
System.out.println("myChrom1のプロファイルをメソッドで呼び出す\n");
myChrom1.showProfile();
System.out.println("myChrom2のプロファイルをメソッドで呼び出す\n");
myChrom2.showProfile();
System.out.println("myChrom3のプロファイルをメソッドで呼び出す\n");
myChrom3.showProfile();}
}class returnValuetest{
public static void main(String args[]){//Chromosomeクラスのインスタンスを作成
//Chromosomeクラスのインスタンスを作成
Chromosome myChrom1 = new Chromosome();//Chromosomeクラスのフィールドに値を代入
myChrom1.pId="1";
myChrom1.pCategory="a";
myChrom1.pAncestor1="";
myChrom1.pAncestor2="";
myChrom1.pForm1="";
myChrom1.pForm2="";
myChrom1.pRecpoints="";//Chromosomeクラスのインスタンスを作成
Chromosome myChrom2 = new Chromosome();//Chromosomeクラスのフィールドに値を代入
myChrom2.pId="2";
myChrom2.pCategory="b";
myChrom2.pAncestor1="1";
myChrom2.pAncestor2="";
myChrom2.pForm1="";
myChrom2.pForm2="";
myChrom2.pRecpoints="";//Chromosomeクラスのインスタンスを作成
Chromosome myChrom3 = new Chromosome();//Chromosomeクラスのフィールドに値を代入
myChrom3.pId="3";
myChrom3.pCategory="b";
myChrom3.pAncestor1="1";
myChrom3.pAncestor2="2";
myChrom3.pForm1="f";
myChrom3.pForm2="m";
myChrom3.pRecpoints="5\t10";Chromosome myChromR1 = new Chromosome();
myChromR1.pId="10(returntestID)";
myChromR1.pRecpoints=myChrom3.returnString();
System.out.println("myChromR1のpRecpointsにmyChrom3のそれを返り値つきメソッドで返し、、メソッドを介して代入された値を含むChromosomeオブジェクトのフィールドの値を表示させる\n");myChromR1.showProfile();
}
}