2017-04-09 202 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