次の【1】【2】の、 Record2() の表現は、 コンストラクタとよばれ、new で生成するときに実行するものです。 これは、クラスの中で定義することができます。
| Record2.java | Test.java | 
|---|---|
import java.io.*;
public class Record2 {
    public String shoCode;// 商品コード
    public short suu;     // 数量
    public void display(int n){
        System.out.printf("%4d番目レコード\n", n);
        System.out.printf("\t商品コード:%s\n", shoCode);
        System.out.printf("\t数量:%d\n", suu);
    }
    public void init(String sho, int n){
        shoCode = sho;
        suu = (short) n;// キャストが必要
    }
}
		 | 
		
public class Test{
    public static void main(String[] arg){
        Record2  a = new Record2();//【1】
        Record2  b = new Record2();//【2】
        a.init( "A01", 10 );
        b.init( "B02", 7  );
        a.display(1);
        b.display(2);
    }
}
		 | 
	
上記の【1】【2】のRecord2()は、デフォルトコンストラクタと呼ばれるもので、クラスを作った時点の始めから使えるものです。
そして、コンストラクタはメソッドのように定義する(作成する)こともできます。
以下は引数のコンストラクタを定義した例です。
コンストラクタの定義は void などの型定義は無しで、戻り値も指定できません。
そして、クラス名とで作る必要があります。
確認用クラスは、右下のように簡単になります。(前の実行結果と同じになります。)
| Record2.java | Test.java | 
|---|---|
import java.io.*;
public class Record2 {
    public String shoCode;// 商品コード
    public short suu;     // 数量
    // 【3】
    
    //引数ありのコンストラクタ
    public Record2(String sho, int n){
        init(  );
    }
    public void display(int n){
        System.out.printf("%4d番目レコード\n", n);
        System.out.printf("\t商品コード:%s\n", shoCode);
        System.out.printf("\t数量:%d\n", suu);
    }
    public void init(String sho, int n){
        shoCode = sho;
        suu = (short) n;// キャストが必要
    }
}
		 | 
		
public class Test{
  public static void main(String[] arg){
     Record2  a = new Record2(  "A01", 10  );
     Record2  b = ;
     a.display(1);
     b.display(2);
  }
}
		 | 
	
なお、上記のRecord2 に引数ありのコンストラクタを作った時点で、
引数なしのコンストラクタ new Record2() 【1】の使用が
なります。 
引数なしのコンストラクタを
例えば、// 【3】のところで、  と定義をすれば、エラーがなくなり、使用が可能となります。
←全ての『未選択』の箇所を正しく選択してから評価ボタンをクリックしてください