■メソッドのオーバーロード(多重定義)
メソッドのオーバーロード(多重定義)とは、引数の数やデータ型が異なれば、ひとつのクラス内に同じ名前のメソッドを作成することである。
▼イメージ
class hoge{
public void hoge_method(){
処理〇〇
}
public void hoge_method(引数1, 引数2){
処理××
}
}
※同じ名前のメソッドが存在する場合、ソースgrepを行うと、複数の処理がヒットしてしまい、影響調査量が増えるので、あまり同じ名前のメソッドを作成するのはお勧めしない・・・。
■今回作成するプログラムの仕様
今回はきのこの名前と量を表示するクラスを作成する。
▼処理内容
・きのこの名前と量を表示するクラス
▼フィールド(メンバ変数)
きのこの名前
きのこの量
▼コンストラクタ
きのこの名前を初期化
きのこの量を初期化
▼きのこの名前と量を表示するメソッド(引数なし)
「きのこの名前:(設定した名前)」と出力
「きのこの量:(設定した数)個」と出力
▼きのこの名前と量を表示するメソッド(引数あり:数字フラグ)
数字フラグが「0」ならば
「きのこの名前:(設定した名前)」と出力
数字フラグが「1」ならば
「きのこの量:(設定した数)個」と出力
数字フラグが「0」「1」以外
「0か1を指定してください」と出力
・メインクラス
きのこの名前と量を表示するクラスをインスタンス(引数:シイタケ, 10)
きのこの名前と量を表示するクラスをインスタンス(引数:マイタケ, 50)
それぞれのインスタンスについて、きのこの名前と量を表示するメソッド(引数なし/あり)を呼び出す。
■サンプルコード
// きのこの名前と量を表示するクラス
class MushroomNameSize{
// メンバ変数の設定
private String mushroom_name; // きのこの名前
private int mushroom_amount; // きのこの量
// きのこの名前と量を表示するメソッド(引数なしのメソッド)
public void show_mushroom_data() {
System.out.println("きのこの名前:" + mushroom_name);
System.out.println("きのこの量:" + mushroom_amount + "個");
}
// きのこの名前と量を表示するメソッド(引数ありのメソッド)
public void show_mushroom_data(int num_flg) {
// num_flgが0なら名前を表示
if(num_flg == 0) {
System.out.println("きのこの名前:" + mushroom_name);
// num_flgが1なら量を表示
} else if(num_flg == 1) {
System.out.println("きのこの量:" + mushroom_amount + "個");
// 0か1以外
} else {
System.out.println("0か1を指定してください");
}
}
// コンストラクタ
public MushroomNameSize(String m_name, int m_amount) {
this.mushroom_name = m_name;
this.mushroom_amount = m_amount;
}
}
// メインクラス
public class Sample {
// メインメソッド
public static void main(String[] args) {
// クラスのインスタンス
MushroomNameSize m_name_size_shiitake = new MushroomNameSize("シイタケ", 10);
MushroomNameSize m_name_size_maitake = new MushroomNameSize("マイタケ", 50);
// 引数のないメソッドを呼び出す
System.out.println("###引数なしのメソッド###");
m_name_size_shiitake.show_mushroom_data();
System.out.println("###引数なしのメソッド###");
m_name_size_maitake.show_mushroom_data();
// 引数ありのメソッドを呼び出す
System.out.println("###引数ありのメソッド###");
m_name_size_shiitake.show_mushroom_data(0);
m_name_size_shiitake.show_mushroom_data(1);
m_name_size_shiitake.show_mushroom_data(2);
System.out.println("###引数ありのメソッド###");
m_name_size_maitake.show_mushroom_data(0);
m_name_size_maitake.show_mushroom_data(1);
m_name_size_maitake.show_mushroom_data(2);
}
}
■実行結果
###引数なしのメソッド###
きのこの名前:シイタケ
きのこの量:10個
###引数なしのメソッド###
きのこの名前:マイタケ
きのこの量:50個
###引数ありのメソッド###
きのこの名前:シイタケ
きのこの量:10個
0か1を指定してください
###引数ありのメソッド###
きのこの名前:マイタケ
きのこの量:50個
0か1を指定してください
コメント