次の【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】のところで、 と定義をすれば、エラーがなくなり、使用が可能となります。
←全ての『未選択』の箇所を正しく選択してから評価ボタンをクリックしてください