我有我更大的代码片段;
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
是一个副本。所以我想知道他们为什么会影响对方?我唯一能想到的解释是,他们是以某种方式加入的。
发布于 2013-08-29 03:21:58
Java编译器在类中没有定义构造函数时提供默认的无参数构造函数。因为您已经在类中定义了一个复制构造函数,所以编译器不会添加非param构造函数。因此,当你这样做时:
PizzaOrdre pizzaorder = new PizzaOrder();
您正在调用未定义的无参数构造函数,这将导致错误。因此,只需在PizzaOrdre类中添加一个非param构造函数,如下所示:
public PizzaOrder(){}
发布于 2013-08-29 03:16:38
您需要添加构造函数。
public PizzaOrder()
{
}
并使用构造函数,如
PizzaOrder anotherPizzaOrder = new PizzaOrder();
...
PizzaOrder pizzorder = new PizzaOrder(anotherPizzaOrder);
发布于 2013-08-29 03:20:03
javac编译器只在不定义任何构造函数的情况下提供隐式零部分构造函数。因此,您需要定义由Alex声明的零parm构造函数。
https://stackoverflow.com/questions/18501742
复制相似问题