027-オブジェクト指向の基本-コンストラクタのオーバーロード【新人エンジニアが最初に覚えたい100のJava文法

ユーチューブ動画

コンストラクタのオーバーロードについて解説します。

ソースコード

public class BasicClass {
	public static void main(String[] args) {
		Product product1 = new Product();
		Product product2 = new Product("pencil",100);
		Product product3 = new Product("eraser",60);
	}
}
class Product {
	private String productName;
	private int price;
	public Product(){
		this.productName = "none";
		this.price = 1000;
	}
	public Product(String productName, int price) {
		this.productName = productName;
		this.price = price;
	}
}

解説

コンストラクタのオーバーロードについて解説します。

コンストラクタもメソッドと同じようにオーバーロードすることができます。

オーバーロードすることで、引数の数や種類で条件分岐したいときに、コード量の削減が期待できます

サンプルコードを確認しましょう。

コンストラクタは、クラス名と同じブロックになります。

Productクラスでは引数がないコンストラクタと引数があるコンストラクタが宣言されています。

引数の数が異なるので、オーバーロードが実現されます。

引数がないコンストラクタでは、固定の初期値が設定されています。

引数があるコンストラクタでは、引数の値をメンバ変数に代入しています。

メンバ変数と引数が同じですから、this.〜を必ずつけます

コンストラクタの呼び出し側を確認しましょう。

インスタンスが3つ作成されています。

最初は引数がないコンストラクタ、2番目と3番目は引数がセットされています。

最初のproduct1インスタンスは、引数がないコンストラクタが呼び出されますから、固定値がセットされてます。

2番目のproduct2インスタンス、3番目のproduct3インスタンスは、引数の値がそれぞれメンバ変数にセットされます。

コンストラクタのオーバーロードによって、呼び出される処理が異なることを読み取ることができたでしょうか?

以上、コンストラクタのオーバーロードについて解説しました。

このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。