比较两个对象,java

Gme*_*n83 1 java

我有两个类,一个是Circle(),另一个是GeometricObject().我必须将GeometricObject扩展为circle,然后在GeometricObject中实现可比较.当我这样做时,我的Circle()类中出现错误,该错误表示无法覆盖抽象方法,而Circle()不是抽象的.我还必须在测试/主类中比较两者,任何人都有任何关于如何修复错误并比较两者的想法?提前致谢.

package chapter_14;

public class Circle extends GeometricObject{ //here is where i get an error
    private double radius;

  public Circle() {
  }

  public Circle(double radius) {
    this.radius = radius;
  }

  /** Return radius */
  public double getRadius() {
    return radius;
  }

  /** Set a new radius */
  public void setRadius(double radius) {
    this.radius = radius;
  }

  /** Return area */
    @Override
  public double getArea() {
    return radius * radius * Math.PI;
  }

  /** Return diameter */
  public double getDiameter() {
    return 2 * radius;
  }

  /** Return perimeter */
    @Override
  public double getPerimeter() {
    return 2 * radius * Math.PI;
  }

  /* Print the circle info */
  public void printCircle() {
    System.out.println("The circle is created " + getDateCreated() +
      " and the radius is " + radius);
  }

}
Run Code Online (Sandbox Code Playgroud)

GeometricObject类:

package chapter_14;


public abstract class GeometricObject implements Comparable{

  private String color = "white";
  private boolean filled;
  private java.util.Date dateCreated;

  /** Construct a default geometric object */
  protected GeometricObject() {
    dateCreated = new java.util.Date();
  }

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

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

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

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

  /** Get dateCreated */
  public java.util.Date getDateCreated() {
    return dateCreated;
  }

  /** Return a string representation of this object */
    @Override
  public String toString() {
    return "created on " + dateCreated + "\ncolor: " + color +
      " and filled: " + filled;
  }

  /** Abstract method getArea */
  public abstract double getArea();

  /** Abstract method getPerimeter */
  public abstract double getPerimeter();

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

问题是GeometricObject声明要实现Comparable:

public abstract class GeometricObject implements Comparable {
Run Code Online (Sandbox Code Playgroud)

这意味着任何具体的子类都必须实现该compareTo方法,例如:

@Override public int compareTo(Object o) {
    Circle circle = (Circle) o;
    return Double.compare(getArea(), circle.getArea());
}
Run Code Online (Sandbox Code Playgroud)

随着这一变化,它在JDK 7中为我编译.