【问题标题】:Constructor has object of abstract class as parameter构造函数有抽象类的对象作为参数
【发布时间】:2013-12-14 21:18:14
【问题描述】:

我有一个名为IGrocery 的接口,其中一个方法public String getName()。 然后是一个名为AbstractFood 的抽象类,它实现了接口并且有一个变量protected String name。 此外,还有一个公共类Ingredient(有一个private double amount必须有这样的构造函数:

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

我不明白如何创建 Ingredient 对象,因为我必须在此之前创建一个 AbstractFood 对象(但 AbstractFood 类是抽象的)。

【问题讨论】:

  • 创建一个 AbstractFood 的具体子类的实例。
  • 你不能实例化一个抽象类——这些只能在你自己的类中扩展(使用)
  • 好的,非常感谢。如果成分构造函数中的数量必须大于零,我可以在构造函数中添加以下内容吗? ... if (amount

标签: java parameters constructor abstract


【解决方案1】:

你有一个继承自 AbstractFood 的类说:

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

这样,您可以将“花生”的实例作为参数提供给构造函数:)

【讨论】:

    【解决方案2】:
    • 创建一个扩展抽象类的子类
    • 如果您不想要第一种方法:然后使用匿名类方法:

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

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2022-01-22
      相关资源
      最近更新 更多