我有一段较大的代码;
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
是单个副本。所以我想知道为什么它们会互相影响?我能想到的唯一解释是它们以某种方式连接在一起。
最佳答案
当类中没有定义构造函数时,Java 编译器提供默认的无参数构造函数。由于您在类中定义了复制构造函数,因此编译器不会添加无参数构造函数。因此,当你这样做时:
PizzaOrdre pizzaorder = new PizzaOrder();
您正在调用未定义的无参数构造函数,这导致了错误。因此,只需在 PizzaOrdre 类中添加一个无参数构造函数,如下所示:
public PizzaOrder(){}
关于java - 复制构造函数冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18501742/