如何编写一个引用类的构造函数,该类指向Java中的对象?

时间:2017-10-23 14:38:10

标签: java parameters constructor copy-constructor

编写另一个引用GeometricObject的构造函数是什么意思,GeometricObject指向一个对象而不是null?

如何将此对象初始化为参数对象的独立副本?

以下代码是GeometricObject类。

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;
  }

2 个答案:

答案 0 :(得分:0)

它基本上意味着您的构造函数接受同一个类的另一个对象,并使用其值实例化一个新对象。

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

然后,如果你有一个对象,你可以像这样创建它的副本:

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

答案 1 :(得分:0)

所以你应该像那样创建你的构造函数

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