复制构造函数冲突?

Ben*_*eno 0 java

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

    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      
}
Run Code Online (Sandbox Code Playgroud)

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

PizzaOrdre pizzaorder = new PizzaOrder(); 
Run Code Online (Sandbox Code Playgroud)

spa出来了

the constructor PizzaOrder is undefined
Run Code Online (Sandbox Code Playgroud)

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

我怎么看(最可能是错的)PizzaOrder Copy是一个副本,Pizzaorder是一个副本.所以我想知道为什么他们互相影响?我能想到的唯一解释是它们以某种方式结合在一起.

Jun*_*san 5

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

PizzaOrdre pizzaorder = new PizzaOrder(); 
Run Code Online (Sandbox Code Playgroud)

您正在调用未定义的无参数构造函数,这会导致错误.因此,只需在您的PizzaOrdre类中添加一个无参数构造函数作为metnioned:

public PizzaOrder(){}
Run Code Online (Sandbox Code Playgroud)

  • 好的,谢谢,这是我第一次需要使用多个构造函数:3 (2认同)