Java コンストラクタのサンプル

Javaのコンストラクタのサンプルです。

目次

コンストラクタ

アクセス修飾子 class クラス名 {
  コンストラクタ名(引数){
    処理
  }
}
  • コンストラクタは、new演算子でクラスをインスタンス化する時に実行されます。
  • 初期値を設定するときなどに使用されます。
  • コンストラクタ名は、クラス名と同じにします。
  • 戻り値はないので、戻り値の記述はしません。
  • アクセス修飾子は、public,protected,なし,privateを指定できます。
  • コンストラクタをオーバーロードすることもできます。
  • 以下は、Oracleの8.8. Constructor Declarationsのリンクです。
    https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8

コード

6~8行目がコンストラクタです。3行目のクラス名(Color)と同じ名前にします。
3行目のクラスがnew演算子でインスタンス化されると、6行目のコンストラクタが呼ばれ、7行目で引数の値が4行目のメンバ変数にセットされます。

package test1;

public class Product {
    private String name;
    
    public Product(String name) {
		this.name = name;
	}
    
	public String getName() {
		return name;
	}
}

コンストラクタを確認する

このサンプルは、上記のコンストラクタがあるクラスを呼び出します。

6行目は、new演算子でインスタンス化しています。その時に引数の値が渡されてインスタンスの変数にセットされます。
8行目は、セットされた値を確認しています。

package test1;

public class Test1 {
    public static void main(String[] args) {
    	
    	Product p1 = new Product("りんご");
     
    	System.out.println(p1.getName());//りんご
    }
 }

 

デフォルトコンストラクタ

  • コンストラクタを記述しない場合、引数がなく、処理も何もしない空のコンストラクタが生成されていることになります。
  • その空のコンストラクタのことをデフォルトコンストラクタまたは暗黙のコンストラクタと呼びます。
  • コンストラクタを記述した場合は、デフォルトコンストラクタは生成されません。

コード

6,7行目がデフォルトコンストラクタのイメージです。引数がなく、処理もありません。

package test1;

public class Product {
    private String name;
    
    Product() {
	}
    
	public String getName() {
		return name;
	}
}

 

コンストラクタのオーバーロードとthisを使用する場合

コンストラクタのオーバーロードとthisを使用する場合のサンプルです。

6,10,14行目がオーバーロードです。コンストラクタ名が同じで引数が異なるものです。

6行目は、インスタンス化する時に引数がない場合に実行されます。
10行目は、インスタンス化する時にString型の引数が1つのときに実行されます。
14行目は、インスタンス化する時にint型の引数が1つのときに実行されます。
15行目のthisは、String型の引数が1つの10行目のコンストラクタを指します。引数も渡されて10行目のコンストラクタで実行されます。

package test1;

public class Product {
    private String name;
    
    public Product() {
    	this.name = "みかん";
	}
    
    public Product(String name) {
		this.name = name;
	}
    
    public Product(int num) {
		this("ばなな");
	}
    
	public String getName() {
		return name;
	}
}

以下は、Oracleの8.8.8. Constructor Overloadingのリンクです。
https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8.8

 

親クラスのコンストラクタを使用する(super)

superは、親クラスのコンストラクタを使用する時に使います。

1.親のクラスです。

package test1;

public class Product1 {
    private String name;
    
    public Product1(String name) {
		this.name = name;
	}
    
	public String getName() {
		return name;
	}
}

2.子のクラスです。上記クラスを継承します。
6行目のsuperは、上記Product1クラスの6行目のコンストラクタを実行します。

package test1;

public class Product2 extends Product1 {

	public Product2(String name) {
		super(name);
	}
}

3.コンストラクタを実行するクラスです。
6行目は、String型の引数を1つ渡しています。
8行目は、値がセットされていることを確認しています。

package test1;

public class Test1 {
    public static void main(String[] args) {
    	
    	Product1 p1 = new Product1("りんご");
     
    	System.out.println(p1.getName());//りんご
    }
 }

関連の記事

Java クラスのサンプル
Java クラスの変数の用語のサンプルとまとめ(メンバー変数他)
Java 変数の型変換のサンプル(基本型と参照型)
Java インスタンスの型を調べるサンプル(instanceof)
Java クラスのthisのサンプル
Java オーバーロードのサンプル

△上に戻る