3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Java 引数なし・ありコンストラクタの作成と使用方法

Posted at

はじめに

引数なしのコンストラクタと引数ありのコンストラクタの作成方法について学習の振り返りをしていきます。

こちらの記事で使用したオブジェクトを使います。
https://qiita.com/c-katsuki/items/442518df7039d442cb43

コンストラクタとは

コンストラクタとは、クラスからオブジェクトを作成した際に、実行されるメソッドになります。

実際にコンストラクタを使用してコードを書いていきます。

ItemBean.java
public class ItemBean implements Serializable {

    //属性の作成
    private String itemID; //商品ID
    private String itemName; //商品名
    private int itemPrice; //商品価格
    private int itemStock; //商品在庫
    
    //引数ありのコンストラクタを作成した場合、引数なしのコンストラクタを作成する必要あり
    public ItemBean() {
    }

    //引数ありコンストラクタ(ID, 名前, 値段, 在庫)
    public ItemBean(String itemID, String itemName, int itemPrice, int itemStock) {
        this.itemID = itemID;
        this.itemName = itemName;
        this.itemPrice = itemPrice;
        this.itemStock = itemStock;
    }

    public String getItemID() {
		return itemID;
	}
	public void setItemID(String itemID) {
		this.itemID = itemID;
	}
	public String getItemName() {
		return itemName;
	}
	public void setItemName(String itemName) {
		this.itemName = itemName;
	}
	public int getItemPrice() {
		return itemPrice;
	}
	public void setItemPrice(int itemPrice) {
		this.itemPrice = itemPrice;
	}
	public int getItemStock() {
		return itemStock;
	}
	public void setItemStock(int itemStock) {
		this.itemStock = itemStock;
	}

}

属性値があるコンストラクタを定義する場合は、引数ありだけでなくなしのコンストラクタも定義する必要があります。

また、コンストラクタはクラスと同じ名前で作成する必要があります。

実際に引数なし・ありでコードを書いてみます。

引数なしのコンストラクタ

ItemNoArguments.java
public class ItemNoArguments {

	public static void main(String[] args) {
	
    	//商品の作成(引数なしのコンストラクタで作成)
    	ItemBean itemBean = new ItemBean();
    	itemBean.setItemID("001");
    	itemBean.setItemName("商品1");
    	itemBean.setItemPrice(1000);
    	itemBean.setItemStock(10);

        //商品情報を表示
        System.out.print(itemBean1.getItemID()); //001
        System.out.print(itemBean1.getItemName()); //商品1
        System.out.print(itemBean1.getItemPrice()); //1000
        System.out.println(itemBean1.getItemStock()); //10

    }

}

インスタンスを変数に割り当て、変数を通じて属性値を使用しています。

つまり1属性値に対して1行コードを記載する必要があり、属性値が多くなると可読性が悪くなるかなと感じました。

引数ありのインスタンスを作成してみます。

引数ありのコンストラクタ

ItemWithArguments.java
public class ItemWithArguments {

	public static void main(String[] args) {
	
    	//商品の作成(引数なしのコンストラクタで作成)
    	ItemBean itemBean = new ItemBean("001", "商品1", 1000, 10);

        //商品情報を表示
        System.out.print(itemBean1.getItemID()); //001
        System.out.print(itemBean1.getItemName()); //商品1
        System.out.print(itemBean1.getItemPrice()); //1000
        System.out.println(itemBean1.getItemStock()); //10

    }

}

引数ありの場合、インスタンスを作成したタイミングで属性値を使用できるのでコードをすっきりして書くことができました。

まとめ

属性値を宣言していたので、引数なしのコンストラクタをItemBeanクラスに記載する必要がありましが、属性値を宣言しない場合は、引数無しのコンストラクタを使用しなくて済むのか?などいくつか疑問が増えました。

分かり次第記事にしていきます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?