复制构造函数

时间:2016-10-26 02:13:19

标签: java copy-constructor

您好我正在尝试创建一个复制构造函数并且即时收到警告。 "没有为Money找到合适的构造函数(没有参数)     构造函数Money.Money(double)不适用       (实际和正式的参数列表长度不同)     构造函数Money.Money(Money)不适用       (实际和正式的参数列表长度不同)" 我正在为类和我想创建这个构造函数的位置继续给我一个警告。

如果我错了,请帮忙纠正。

这是我的导师给我的任务。

重载构造函数。您将编写的构造函数将是一个复制构造函数。它应该使用参数Money对象来创建一个重复的Money对象,方法是将每个实例变量的值从参数对象复制到新对象的实例变量

这就是我写的。

 public Money(Money object)
   {
       Money newMoney = new Money();
   }

3 个答案:

答案 0 :(得分:2)

添加参数化构造函数时,将删除默认构造函数。尝试添加

public Money()
   {
   }

代码。我不知道你的构造函数是如何复制任何东西的

答案 1 :(得分:2)

如果定义一个或多个构造函数,则不会自动生成默认构造函数(无参数构造函数)。 您定义了一个带有一个参数Money(Money object)的构造函数,因此如果没有显式定义无参数构造函数,则无法执行new Money()

顺便说一句,在Money(Money object)中创建Money对象是没用的。 复制构造函数如下:

public Money(Money object) {
  this.param1 = object.param1;
  this.param2 = object.param2;
}

答案 2 :(得分:0)

当你创建一个类时,编译器将添加一个没有参数的默认构造,例如public Money()2是你的默认构造函数。

但是在你明确定义构造函数之后,编译器将不再这样做了。

所以它提示没有适用的(实际和正式的参数列表长度不同)。

要解决这个问题,你应该添加没有参数的构造函数。