gpt4 book ai didi

java - 比较两个对象,java

转载 作者:行者123 更新时间:2023-11-29 09:50:11 25 4
gpt4 key购买 nike

我有两个类,一个是 Circle(),另一个是 GeometricObject()。我必须将 GeometricObject 扩展为圆形,然后在 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);
}

}

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();

}

最佳答案

问题是 GeometricObject 被声明为实现 Comparable:

public abstract class GeometricObject implements Comparable {

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

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

随着这个改变,它在 JDK 7 中为我编译。

关于java - 比较两个对象,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com