Java 调用接口方法,但返回类型无效?

Java 调用接口方法,但返回类型无效?,java,Java,我不想来到这里问一个可能很愚蠢的问题,但我是一名编码专业的学生,我的老师几乎没有提供关于接口的信息,但我有一个作业要做,我在调用类正在实现的接口中的方法时遇到了问题。这是我正在做的项目的代码 import java.util.Scanner; public class Lab2B { public static void main(String[] args) { Octagon test = new Octagon(); System.out.printf("Th

我不想来到这里问一个可能很愚蠢的问题,但我是一名编码专业的学生,我的老师几乎没有提供关于接口的信息,但我有一个作业要做,我在调用类正在实现的接口中的方法时遇到了问题。这是我正在做的项目的代码

import java.util.Scanner;
public class Lab2B {
   public static void main(String[] args) {
      Octagon test = new Octagon();
      System.out.printf("The octagon has a side length of %1.2f, a perimiter of %1.2f, and an area of %1.2f.", test.sideLength, test.perimiter, test.area);
   }
}

abstract class GeometricObject {
   double area;
   double perimiter;
   public GeometricObject() {

   }
}

class Octagon extends GeometricObject implements Comparable, Cloneable {
   double sideLength;
   public Octagon() {
      Scanner input = new Scanner(System.in);
      System.out.println("Enter side length of Octagon: ");
      this.sideLength = input.nextDouble();
      this.area = ((2 + (4 / Math.sqrt(2))) * this.sideLength * this.sideLength);
      this.perimiter = (this.sideLength * 8);
   }

   public void clone() {
   System.out.println("I wish I knew how to code");
   }
}


interface Cloneable {
   public void clone();
}
它给了我这个错误

Lab2B.java:29: error: clone() in Octagon cannot override clone() in Object
public void clone() {
            ^
return type void is not compatible with Object

老实说,我不确定我在这里做错了什么,这似乎符合我在互联网上找到的每个接口示例。非常感谢您的帮助。

首先,您可以从java实现可克隆接口(无需创建自己的接口)

另外,这有点奇怪,但克隆方法位于需要重写的对象类中。(它应该是可克隆的)。要覆盖克隆方法,可以执行以下操作:

@Override
protected Object clone() throws CloneNotSupportedException {

}
以下是使用克隆进行深层和浅层复制的好方法:


首先,不应声明可克隆的接口。这已经存在于标准JavaAPI中


但是,除非您的任务特别要求实现
Cloneable
,否则您应该将其从代码中删除。
Cloneable
接口的设计被认为被现代Java标准打破了。它的存在只是因为Java最初发明时编写的遗留代码。

实现了
Cloneable
为什么你有自己的
Cloneable
接口?我真的不知道我在做什么,所以我甚至不知道我自己的
Cloneable
接口做错了什么。作业要求你
实现可克隆性
?如果没有,我建议你删除这个。不幸的是,它确实有,但这不是我们课堂上的任何材料都涵盖的东西,所以我想我要自己弄清楚它是如何使用的。