1.事前知識
事前知識として、上記リンクの内容が必要です。
2.オーバーロードとは
-
オーバーロード
とは、同じメソッド名で異なる引数の数
または異なる引数の型
を持つメソッドを定義すること。 - 引数の数が同じコンストラクタが
複数存在
する場合、引数の型が同じ
コンストラクタが呼び出される。 - コンストラクタ内から
this()
を使用することで別のコンストラクタを呼び出すこともできる。 -
this()
によるコンストラクタの呼び出しは、コンストラクタの先頭
に記述する必要がある。
3.基本的な書き方
テストクラス
package パッケージ名;
public class メインクラス名{
public static void main(String[] args) {
// インスタンスの生成
クラス名 変数名1 = new クラス名();
クラス名 変数名2 = new クラス名(実引数);
クラス名 変数名3 = new クラス名(変数名2と異なる型の実引数);
}
}
オーバーロードクラス
package パッケージ名;
class クラス名{
// インスタンス変数の定義
private 型名 変数名;
// コンストラクタ1(引数なし)
クラス名(){
初期化処理など
}
// コンストラクタ2(引数あり)
クラス名(型名 引数名){
初期化処理など
}
// コンストラクタ3(コンストラクタ2と異なる引数あり)
クラス名(型名 引数名){
初期化処理など
}
}
- 基本的なオーバーロードは上記のように記述します。
4.事前準備
- Eclipseを起動し、
[ファイル(F)]→[新規(N)]→[Java プロジェクト]
を選択する。
- プロジェクト名に
Test1
と入力し、完了
ボタンをクリックする。
-
[ファイル(F)]→[新規(N)]→[クラス]
を選択する。
- パッケージと名前に
Test1
と入力し、完了
ボタンをクリックする。
-
Test1.java
が作成されたことを確認する。
- 3と同様の手順でパッケージに
Test1
と入力し、 名前にTestOverload
と入力し、完了
ボタンをクリックする。
-
Test1.java
とTestOverload.java
が作成されれば成功。
5.記述例
-
オーバロード
を使うメリットは、名前の違うメソッドをいくつも覚える必要がない
こと。 - 例えば、
出欠確認
のように事前に出欠の確認が取れている人
と未定の人
がいる場合などに使える。(出席・欠席・未定 の3つのメソッドを作らずにコンストラクタのみで完結できる。)
Test1.java
// 出欠確認を取るシステム
package Test1;
public class Test1 {
public static void main(String[] args) {
// インスタンスの生成
TestOverload to1 = new TestOverload("A");
TestOverload to2 = new TestOverload("B",1);
TestOverload to3 = new TestOverload("C",2);
System.out.println("-----4月1日-----");
//インスタンスの中身を表示
to1.showAttendance();
to2.showAttendance();
to3.showAttendance();
}
}
TestOverload.java
package Test1;
public class TestOverload {
// インスタンス変数の定義
private String name;
private int attend;
// コンストラクタ1(引数なし)
TestOverload(){
this("未入力",0);
}
// コンストラクタ2(引数あり)
TestOverload(String name){
this(name,0);
}
// コンストラクタ3(コンストラクタ2と異なる引数あり)
TestOverload(int attend){
this("未入力",attend);
}
// コンストラクタ4(引数の数が2つ)
TestOverload(String name,int attend){
this.name = name;
this.attend = attend;
}
//表示メソッド
void showAttendance(){
String str = "";
switch(attend) {
case 0:
str += "未定";
break;
case 1:
str += "出席";
break;
case 2:
str += "欠席";
break;
}
System.out.println(name+"さんは"+str);
}
}
6.GitHub
GitHubにソースコードを公開しています。