0

我有这个更大的代码片段;

    public PizzaOrder(PizzaOrder PizzaOrderCopy)
    {
        this.pizza1 = PizzaOrderCopy.pizza1;
    }
    /**
     * @param args
     */
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        PizzaOrder pizzorder = new PizzaOrder();

        pizzorder.setNumPizza(1);
        pizzorder.setPizza1("small",1,1,1);
        pizzorder.setPizza2("medium",3,6,4);
        pizzorder.setPizza3("large",2,4,4);
        pizzorder.getpizza1info();
        pizzorder.getpizza2info();
        pizzorder.getpizza3info();
        pizzorder.calcTotal();

    }
        // TODO Auto-generated method stub      
}

我正在制作一个复制构造函数PizzaOrderCopy并制作PizzaOrders对象 Pizza1 的副本。当我构建这个我的代码

PizzaOrdre pizzaorder = new PizzaOrder(); 

喷出来

the constructor PizzaOrder is undefined

因为它现在需要一个参数。

我如何看待它(很可能是错误的)PizzaOrder Copy是一个单一的副本,并且Pizzaorder是一个单一的副本。所以我想知道为什么它们会相互影响?我能想到的唯一解释是它们以某种方式结合在一起。

4

3 回答 3

5

当类中没有定义构造函数时,Java 编译器提供了一个默认的无参数构造函数。由于您在类中定义了复制构造函数,因此编译器不会添加无参数构造函数。因此,当你这样做时:

PizzaOrdre pizzaorder = new PizzaOrder(); 

您正在调用未定义的无参数构造函数,这会导致错误。因此,只需在您的 PizzaOrdre 类中添加一个无参数构造函数,如下所示:

public PizzaOrder(){}
于 2013-08-29T03:21:58.547 回答
2

您需要添加构造函数

public PizzaOrder()
{

}

并使用你的构造函数

PizzaOrder anotherPizzaOrder = new PizzaOrder();
...
PizzaOrder pizzorder = new PizzaOrder(anotherPizzaOrder);
于 2013-08-29T03:16:38.273 回答
1

如果您未定义任何构造函数,javac 编译器仅提供隐式零参数构造函数。因此,您需要按照 Alex 的说明定义零参数构造函数。

于 2013-08-29T03:20:03.003 回答