【Java】オーバーロード

2018年3月11日

本稿はメソッドやコンストラクタのオーバーロードに関して説明していきます。

メソッドのオーバーロード

クラス内のメソッドは通常同じ名前のメソッドを二つ以上定義できません。

ですが、引数の型のパターンが違えば同じメソッド名を使うことができます。

そして、呼び出し先は引数の型のパターンに合致したものを自動で呼び出すようになっているのです。

ということで、メソッドのオーバーロードのサンプルをご覧ください。

public class Test{
	public static void main(String[] args){
		Chara ch = new Chara();
		ch.print(100);
		ch.print(5,4);
	}

}

class Chara{
	void print(int hp, int mp){
		System.out.println("私のhpとmpは"+hp+":"+mp+"です。");
	}
	void print(int hp){
		System.out.println("私のhpは"+hp+"です。");
	}
}
実行結果

私のhpは100です。
私のhpとmpは5:4です。

コンストラクタのオーバーロード

コンストラクタも同様に、引数の型のパターンが違えば複数定義できます。

public class Test{
	public static void main(String[] args){
		new Chara("なすび");
		new Chara("なすび",1);
	}
}

class Chara{
	Chara(String name){
		System.out.println(name);
	}
	Chara(String name, int hp){
		System.out.println(name+"のHPは"+hp);
	}
}
実行結果

なすび
なすびのHPは1

オーバーロードしたコンストラクタを別のコンストラクタから呼び出す

コンストラクタは別のコンストラクタを呼び出す事もできます。

呼び出す方法は「this(引数…)」と記述してください。

この処理はコンストラクタの最初にしか記述できないので注意してください。

public class Test{
	public static void main(String[] args){
		new Chara("私");
	}
}

class Chara{
	Chara(String name){
		this(name,100);
	}
	Chara(String name, int hp){
		System.out.println(name+"のHPは"+hp+"です。");
	}
}
実行結果

私のHPは100です。

Java

Posted by nompor