2013-12-14 137 views
2

我有一個名爲IGrocery的接口,其中一個方法是public String getName()。 然後有一個叫做AbstractFood的抽象類實現了接口,它有一個變量protected String name。 另外,也有一個公共類Ingredient(一個private double amount),這必須有這樣的構造:構造函數具有抽象類的對象作爲參數

public Ingredient(AbstractFood food, double amount){ 
    this.amount=amount; 
    ??? 
} 

我不明白我怎麼可以創建一個Ingredient對象,我會創建一個AbstractFood之前的對象(但AbstractFood類是抽象的)。

+5

創建AbstractFood的具體子類的實例。 –

+0

你不能實例化一個抽象類 - 這些只能在你自己的類中被擴展(使用) –

+0

好的非常感謝。 如果Ingredient構造函數中的數量必須大於零,我可以在構造函數中添加以下內容嗎? ... if(amount <= 0){ throw new IllegalArgumentException( 「Amount must be positive」); } – user3077292

回答

3

您已經從AbstractFood inhertices類說:

public class Peanut extends AbstractFood 
{ 
    public Peanut(){ 
    //code 
    } 
} 

這樣的話,你可以給「花生」的實例作爲參數的構造:)

0
  • 創建延伸的子類抽象類
  • 如果你不想第一種方法:那麼使用匿名類方法:

    AbstractFood aFood = new AbstractFood() 
              { 
               // your implementation 
              }; 
    new Ingredient(aFood, someDoubleVal);