2017-04-09 117 views
-1
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

你到目前为止试过了什么? – RhinoDevel

回答

0

如果不这样做你的功课你,而是给你一个淡淡一点的:

一个拷贝构造函数的想法是创建一个基于现有的一个对象;所以你可以写:

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

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

除此之外:了解构造函数和常规方法之间的区别。由于这个位置:

public void Circle(double r) { 
} 

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

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" 
+0

我会称之为克隆构造函数,而不是复制构造函数。 – c0der

+0

@ c0der在java中没有复制构造函数这样的事情,但有克隆构造函数的作用完全像复制构造函数 –

+0

复制构造函数将是'this = c;' – c0der