2013-12-14 131 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);