首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >复制构造器冲突?

复制构造器冲突?
EN

Stack Overflow用户
提问于 2013-08-29 03:15:06
回答 3查看 108关注 0票数 0

我有我更大的代码片段;

代码语言:javascript
运行
复制
    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的副本。当我构建这个代码时

代码语言:javascript
运行
复制
PizzaOrdre pizzaorder = new PizzaOrder(); 

散开

代码语言:javascript
运行
复制
the constructor PizzaOrder is undefined

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

我认为(最可能是错误的)是PizzaOrder Copy是一个副本,而Pizzaorder是一个副本。所以我想知道他们为什么会影响对方?我唯一能想到的解释是,他们是以某种方式加入的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-29 03:21:58

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

代码语言:javascript
运行
复制
PizzaOrdre pizzaorder = new PizzaOrder(); 

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

代码语言:javascript
运行
复制
public PizzaOrder(){}
票数 5
EN

Stack Overflow用户

发布于 2013-08-29 03:16:38

您需要添加构造函数。

代码语言:javascript
运行
复制
public PizzaOrder()
{

}

并使用构造函数,如

代码语言:javascript
运行
复制
PizzaOrder anotherPizzaOrder = new PizzaOrder();
...
PizzaOrder pizzorder = new PizzaOrder(anotherPizzaOrder);
票数 2
EN

Stack Overflow用户

发布于 2013-08-29 03:20:03

javac编译器只在不定义任何构造函数的情况下提供隐式零部分构造函数。因此,您需要定义由Alex声明的零parm构造函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18501742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档