0

次のコードを検討してください。

// Create a Item oject
item item = new item();

コンパイラ エラー メッセージ:

エラー - シンボルが見つかりません - コンストラクタ item();

クラスitem:

public class item
{
    // Attributes
    private String Itemcode;
    private String Itemname;
    private String Description;
    private String Style;
    private String Finish;
    private float  Unitprice;
    private float  Stock;
    private String Suppliercode;
    private String Suppliername;
    private String Address;

    public item(String ItemcodeIn, String ItemnameIn, String DescriptionIn,
                String StyleIn, String FinishIn, float UnitpriceIn, float StockIn,
                String SuppliercodeIn,
                String SuppliernameIn, String AddressIn)
    {
        Itemcode = ItemcodeIn;
        Itemname = ItemnameIn;
        Description = DescriptionIn;
        Style = StyleIn;
        Finish = FinishIn;
        Unitprice = UnitpriceIn;
        Stock = StockIn;
        Suppliercode = SuppliercodeIn;
        Suppliername = SuppliernameIn;
        Address = AddressIn;
    }

そして、このコードの後に​​、属性のセッター/ゲッター メソッドがすべて続きます。

この問題を解決するにはどうすればよいですか?

4

4 に答える 4

10

パラメーター化されたコンストラクターを作成すると、独自のコンストラクターを作成しない限り、デフォルトのコンストラクターが削除されます。

したがって、以下のようにデフォルトのコンストラクターを明示的に作成する必要があります。

public Item() {}
于 2012-05-15T18:21:22.137 に答える
6

デフォルトのコンストラクターを追加する必要があります。

public item() {
   // any initialization you need here
}

また、ベストプラクティスに従って、クラスの名前をItem(capital I)に変更し、フィールドは小文字で始める必要があります。

于 2012-05-15T18:21:37.680 に答える
2

Itemクラスにはコンストラクターが 1 つしかありません。

public item(String ItemcodeIn, String ItemnameIn, String DescriptionIn, 
     String StyleIn, String FinishIn, float UnitpriceIn, float StockIn, 
     String SuppliercodeIn, String SuppliernameIn, String AddressIn)

このコンストラクターを介してアクセスしようとしていますnew Item();が、パラメーター化されたコンストラクターでオーバーライドしたため、このコンストラクターは存在しません。

作成時にこれらの引数を指定するItemか、別の汎用コンストラクターを作成する必要があります。

public Item() {
    // Some code goes here
}
于 2012-05-15T18:23:53.653 に答える
0

constructor を記述しない場合は常に、デフォルトのコンストラクターがデフォルトでクラス内で使用可能になります。ただし、任意のクラス内でパラメーター化されたコンストラクターを定義すると、そのパラメーター化されたコンストラクターのみが使用可能になります。このような場合、デフォルトのコンストラクターを明示的に定義する必要があります。

于 2012-05-15T18:55:49.010 に答える