Java 错误解释困难

Java 错误解释困难,java,arrays,interface,Java,Arrays,Interface,我收到一个错误“Octagon类型必须实现继承的抽象方法Comparable.compareTo(Octagon)”不确定这到底意味着什么或如何修复它。我非常感谢你的帮助 代码如下: public class Problem13_11 { public static void main(String[] args) { Octagon Octagon1 = new Octagon(5); Octagon Octagon2 = (Octagon)Octagon1.c

我收到一个错误
“Octagon类型必须实现继承的抽象方法Comparable.compareTo(Octagon)”
不确定这到底意味着什么或如何修复它。我非常感谢你的帮助

代码如下:

public class Problem13_11 {
public static void main(String[] args) {
        Octagon Octagon1 = new Octagon(5);
        Octagon Octagon2 = (Octagon)Octagon1.clone();

        System.out.println("Compare Octagon1 and Octagon 2" + (Octagon1.compareTo(Octagon2)));
        System.out.println("Does Octagon1 equal Octagon 2?" + Octagon1.equals(Octagon2));
    }
}
class Octagon extends GeometricObject implements Comparable<Octagon>,Cloneable{
     private double side;

     public Octagon() {
         side = 0;
     }
     public Octagon(double side) {
         this.side = side;
     }
     public double getSide() {
         return side;
     }
     public void setSide() {
          this.side = side;
     }
     public double getArea() {
         return (2 + 4/ Math.sqrt(2) * side * side);
     }
     public double getPerimeter() {
         return side * 8;
     }
     public Object clone() {
         Object o;
         o = clone();
         return o;
     }
     @Override
     public boolean equals(Object o) {
        return o instanceof Octagon && getArea() == ((Octagon)o).getArea();
     }
     interface Cloneable{
            public void clone();
    }
     interface Comparable{
            public void compareTo();
    }
}
公共类问题13\u 11{
公共静态void main(字符串[]args){
八角形八角形1=新八角形(5);
八角形八角形2=(八角形)八角形1.clone();
System.out.println(“比较八角形1和八角形2”+(八角形1.compareTo(八角形2));
System.out.println(“八角1等于八角2吗?”+Octagon1.equals(Octagon2));
}
}
类Octagon扩展了GeometricObject实现了可比较、可克隆的{
私人双边关系;
公共八角形(){
边=0;
}
公共八角形(双面){
这个边=边;
}
公共双getSide(){
返回侧;
}
公共void setSide(){
这个边=边;
}
公共区域(){
返回(2+4/数学sqrt(2)*边*边);
}
公共双边界{
返回侧*8;
}
公共对象克隆(){
对象o;
o=克隆();
返回o;
}
@凌驾
公共布尔等于(对象o){
返回八边形的o实例(&getArea()==((八边形)o).getArea();
}
界面可克隆{
公共空克隆();
}
界面可比{
公共无效比较();
}
}

我的目标是编写一个实现可比较和可克隆接口的类。我相信我已经完成了所有这些,但是我出于某种原因得到了这个错误。

您需要能够将两个八角形对象相互比较,因此为了做到这一点,您实现了Comparable,这反过来意味着您必须实现public int compareTo(八角形八角形)方法。如果说您实现了,那么您就接受了这样一个合同,即您将实现Compariable定义的每个方法。在本例中,方法public int compareTo(八角形-八角形)

public int compareTo(八角形或八角形)
{
if(this.getArea()==octangon.getArea())
返回0;
else if(this.getArea()

由于八角形是等边形,您可以简单地比较八角形对象的区域

它告诉您要做什么,您必须实现一个名为compareTo(Octagon)的方法,该方法返回一个int,检查一个简单的示例您需要向Octagon类添加一个compareTo()方法。可能重复^不同的方法,但同样的问题。您声明了
实现了Comparable
,但实际上并没有提供
compareTo
方法。更好的答案。通常我看到
if(this==otherOctagon)返回0短路如果两个测试是同一个对象,可能会更昂贵的测试。(想象一下,如果.getArea()在计算上很昂贵)
public int compareTo(Octagon otherOctagon)
{
    if(this.getArea() == octangon.getArea())
        return 0;
    else if(this.getArea() < octangon.getArea())
        return -1;
    else
        return 1; 
}