2017-04-09 15 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); 

上記のコードは、すでに新しいコンストラクタの署名を提供しています。そして、他のコンストラクターが何をしなければならないかを理解するためには、一歩前進して考えてください。どのようにして別のサークルを同じプロパティにするのですか?

これ以外にも、コンストラクタと通常のメソッドの違いについて知ることができます。この、ここのよう:

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

関連する問題