Java 如何使用复制构造函数

Java 如何使用复制构造函数,java,constructor,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;

如何向类循环中添加复制构造函数?

不是为您做作业,而是给您一点提示:

复制构造函数的思想是基于现有对象创建一个新的对象;这样你就可以写:

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 first = new Circle(1.0);
Circle second = new Circle(first);

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

这非常简单。您可以让构造函数将类对象类型作为参数,然后相应地设置值

 public void Circle(double r) {
 }

我会称它为克隆构造函数,而不是复制构造函数。@在java中,是的,没有复制构造函数,但有克隆构造函数,它的行为与复制构造函数完全相同。复制构造函数是
this=c假设您在对象中的意思是这样,是的
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"