2017-10-23 7 views
0

Was bedeutet es, einen anderen Konstruktor zu schreiben, der auf GeometricObject verweist, der auf ein Objekt und nicht auf null verweist?Wie schreibe ich einen Konstruktor, der auf eine Klasse verweist, die auf ein Objekt in Java verweist?

Und wie kann ich dieses Objekt initialisieren, um eine unabhängige Kopie des Parameterobjekts zu sein?

Der folgende Code ist die GeometricObject-Klasse.

public class GeometricObject { 
public String color = "white"; 
public double area = 0; 
public double perimeter = 0; 

    public boolean filled; 

    /** Construct a default geometric object */ 
    public GeometricObject() { 
    } 

    public GeometricObject(String color, boolean filled){ 
     this.color = color; 
     this.filled = filled; 
    } 


    /** Return color */ 
    public String getColor() { 
    return color; 
    } 

    /** Return area */ 
    public double getArea(){ 
     return area; 
    } 

    /** Return object */ 
    public GeometricObject copy() { 
     return null; 
    } 


    /** Return perimeter */ 
    public double getPerimeter(){ 
     return perimeter; 
    } 

    /** Set a new color */ 
    public void setColor(String color) { 
    this.color = color; 
    } 

    /** Return filled. Since filled is boolean, 
    * the get method is named isFilled */ 
    public boolean isFilled() { 
    return filled; 
    } 

    /** Set a new filled */ 
    public void setFilled(boolean filled) { 
    this.filled = filled; 
    } 



    @Override 
    public String toString() { 
    return "\ncolor: " + color + " and filled: " + filled; 
    } 
+0

erstellen [Warum tun wir brauche Kopierkonstruktor und wann sollten wir Kopierkonstruktor in Java verwenden] (https://stackoverflow.com/q/29362169/669576) –

Antwort

0

Im Grunde bedeutet es, dass Ihr Konstruktor in einem anderen Objekt der gleichen Klasse nimmt, und instanziiert ein neues Objekt seiner Werten.

public GeometricObject(final GeometricObject other){ 
    this.color = other.color; 
    this.filled = other.filled; 
    //copy other member variables 
} 

Dann, wenn Sie ein Objekt haben, können Sie eine Kopie davon wie folgt erstellen:

final GeometricObject geometricObject = new GeometricObject(); 
//do stuff to geometricObject, give values to variables, etc 
final GeometricObject copy = new GeometricObject(geometricObject); 
+0

Danke Aber was bedeutet das "endgültige GeometricObject andere"? –

+0

Es ist nur eine normale Variable. – Tobb

+0

Warum müssen wir dort 'final' hinzufügen? –

0

so sollte Ihr Konstruktor wie die

public GeometricObject(GeometricObject original){ 
    if (original != null) { 
     this.color = original.color; 
     ... other variables ... 
    } 
} 
Verwandte Themen