返り値なしのメソッドと返り値ありのメソッド

前述の■ [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();
}
}