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