【Java】コンストラクタのオーバーロード(多重定義)のやり方

■コンストラクタのオーバーロード(多重定義)

コンストラクタのオーバーロード(多重定義)とは、引数の有無でひとつのクラス内に同じ名前のコンストラクタを作成することである。この時、引数なしのコンストラクタはデフォルト値を設定し、引数ありのコンストラクタでメンバ変数を初期化する。

▼イメージ

class hoge{
    // メンバ変数
    private String name;
    private int yen;

    // 引数なしのコンストラクタ
    public hoge(){
        this.name = "デフォルト値";
        this.yen = 0;
    }

    // 引数ありのコンストラクタ
    public hoge(引数1, 引数2){
        this.name = 引数1;
        this.yen = 引数2;
    }
}

■今回作成するプログラムの仕様

今回は従業員の名前と給与を表示するクラスを作成する。

▼処理内容

・従業員の名前と給与を表示するクラス

▼フィールド(メンバ変数)
従業員名
給与額(万円)

▼コンストラクタ(引数あり)
従業員名に値を設定
給与額(万円)に値を設定

▼コンストラクタ(引数なし)
従業員名に初期値:未設定を設定
給与額(万円)に初期値:0を設定

▼従業員名と給与額を表示するメソッド
従業員名を表示
給与額を表示


・メインクラス

引数あり/なしで従業員の名前と給与を表示するクラスをインスタンス
 引数あり:hoge, 30
それぞれのインスタンスで従業員名と給与額を表示するメソッドを実行

■サンプルコード

// 従業員の名前と給与を表示するクラス
class EmployeeSalary{
	
	// メンバ変数
	private String employee_name;	// 従業員名
	private int employee_salary;	// 給与額(万円)
	
	// コンストラクタ(引数あり)
	public EmployeeSalary(String name, int salary) {
		this.employee_name = name;
		this.employee_salary = salary;
	}
	
	// コンストラクタ(引数なし)
	public EmployeeSalary() {
		this.employee_name = "未設定";
		this.employee_salary = 0;
	}
	
	// 従業員名と給与額を表示するメソッド
	public void show_name_salary() {
		System.out.println("#####従業員の給与情報#####");
		System.out.println("従業員名:" + employee_name);
		System.out.println("給与:" + employee_salary + "万円");
	}
	
}

// メインクラス
public class Sample {
	public static void main(String[] args) {
		
		// 引数あり/なしでインスタンス
		EmployeeSalary esA = new EmployeeSalary();
		EmployeeSalary esB = new EmployeeSalary("hoge", 30);
		
		esA.show_name_salary();
		esB.show_name_salary();
	}

}

■実行結果

#####従業員の給与情報#####
従業員名:未設定
給与:0万円
#####従業員の給与情報#####
従業員名:hoge
給与:30万円
タイトルとURLをコピーしました