如何使用复制构造函数

时间:2017-04-09 08:19:51

标签: java constructor

class Circle {

  private double r;

  public Circle(double r) {
    this.r = r;
  }

  public void Circle(double r) {
  }

  double calCircumference() {
    return 2 * Math.PI * r;
  }

  public double calArea() {
    return Math.PI * r * r;
  }
}

我如何将复制构造函数添加到Circle类?

2 个答案:

答案 0 :(得分:1)

这很简单。你可以做的是让构造函数将类对象类型作为参数,然后相应地设置值。

class Circle {
   private double r;

   public Circle(double r) {
    this.r = r;
   }

   // Copy constructor
   public Circle(Circle c) {
    this.r = c.r;
   }
}


// example of use case

Circle c1 = new c(5);   // initialize c1
Circle c2 = new c(c1);  // copy c1 to c2
c2.r = 3;
System.out.println(c1.r + " " ); // prints "5"
System.out.println(c2.r + " " ); // prints "3"

答案 1 :(得分:0)

不为你做功课,但给你一点提示:

复制构造函数的想法是基于现有对象创建 new 对象;所以你可以写:

Circle first = new Circle(1.0);
Circle second = new Circle(first);

上面已经为您提供了新构造函数的签名。并且为了理解其他构造函数必须做什么:退一步思考:Circle有哪些属性;你会如何让另一个圆圈具有相同的属性?!

除此之外:了解构造函数和常规方法之间的区别。就像这里:

 public void Circle(double r) {
 }

根本没有任何感觉! (提示:构造函数不指定返回类型!)