2012-05-16 120 views
0

稍有問題就在這裏:爪哇 - 超類/子類

public class Item extends ItemManufacturer 
{ 
// Attributes 
private String itemcode; 
private String itemname; 
private String description; 
private String style; 
private String finish; 
private float unitprice; 
private float stock; 

public void item(String suppliercodeIn, String suppliernameIn, String addressIn, String itemcodeIn, String itemnameIn, String descriptionIn, 
      String styleIn, String finishIn, float unitpriceIn, float stockIn) 
    { 
     super (suppliercodeIn, suppliernameIn, addressIn); 

     itemcode = itemcodeIn; 
     itemname = itemnameIn; 
     description = descriptionIn; 
     style = styleIn; 
     finish = finishIn; 
     unitprice = unitpriceIn; 
     stock = stockIn; 
    } 

我收到以下錯誤消息:

呼叫超必須在構造函數中的第一條語句。

有人願意幫助我嗎?

是一個額外的錯誤,我在與類討論之後。

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

我正在使用一個名爲項目和項目的表名稱的數據庫。

+2

而且,我懷疑的類層次結構的如果名字有意義。 –

回答

2

我懷疑是一個錯字。您的構造函數應該被稱爲Item而不是item。 (並且構造函數不返回任何內容,甚至不包括void。)

至於new表達式:當您創建Item的新實例時,您需要傳入所有這些參數。

Item item = new Item("234SD23", "SuperSupplier", "21 SO Drive", ...); 
+0

這意味着您還沒有爲您的ItemManufacturer類定義這樣的構造函數(或者也可能有類型錯誤)。 – Mat

+0

感謝您的幫助,我在物品和itemanufacturer類中都犯了這個錯誤。 – silverj2k7

+0

已修復第一個錯誤。 – silverj2k7

4

這就是問題所在:

public void item(...) 

這不是一個Item類的構造函數 - 這就是所謂的item一個void方法。它應該是:

public Item(...) 

請注意,Java區分大小寫,並且構造函數沒有聲明的返回類型;它的只是可訪問性,後跟類的名稱,後跟參數列表。

+0

@ silverj2k7:你確定你有與該類名稱匹配的構造函數的名字嗎?你是否修復了「item」的情況? –

+0

public class Item extends ItemManufacturer { //屬性 private String itemcode; private String itemname; 私人字符串描述; 私人字符串風格; 私人字符串完成; 私人浮動單位價格; 私人流通股; /* *爲項目 */ 公共項目構造方法(String suppliercodeIn,字符串suppliernameIn,字符串地址素,字符串itemcodeIn,字符串itemnameIn,字符串descriptionIn – silverj2k7

+0

比較遺憾的是,是的,我確實有它固定在一個點然後我需要把項目類分成兩類其他原因 – silverj2k7

0

看了這個,

  1. 如果沒有錯字,以及產品的方法,那麼超(),不會工作。你需要做super.item();

  2. 如果有一個錯字,它不是項項目,那麼就沒有返回類型,

    如:

    public Item (String suppliercodeIn, String suppliernameIn, String addressIn, 
        String itemcodeIn, String itemnameIn, String descriptionIn, 
        String styleIn, String finishIn, float unitpriceIn, float stockIn){ 
    
    } 
    
+0

它是: public Item(String suppliercodeIn,...... – silverj2k7

+0

所以沒有錯字,所以super.item();會是for?抱歉太多ITEMS我現在很容易混淆=/ – silverj2k7

+0

@ silverj2k7:空間不重要Kumar的第一點是你可能想要在超類中調用一個名爲'item'的方法,但那不是什麼你想要。 – Mat