我不愿意来这里问一个可能是一个愚蠢的问题,但是我是一名编码学生,我的老师很少提供有关接口主题的信息,但是我有一个作业要交,我正在在类正在实现的接口内调用方法的问题。这是我正在做的项目的代码
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
老实说,我不确定我在这里做错了什么,这似乎与我可以在互联网上找到的接口的每个示例都一致。任何帮助将不胜感激。
答案 0 :(得分:1)
首先,您可以从java实现Cloneable接口(无需创建自己的接口)。
另外,它有点怪异,但是克隆方法在Object类中,需要重写。 (它应该在Cloneable中)。要覆盖克隆方法,您可以执行以下操作:
@Override
protected Object clone() throws CloneNotSupportedException {
}
以下是使用克隆的“深层复制和浅层复制”的很好阅读:
https://howtodoinjava.com/java/cloning/a-guide-to-object-cloning-in-java/
答案 1 :(得分:0)
首先,您不应该声明Cloneable
接口。在标准Java API中已经存在。
但是,除非您的分配明确要求实施Cloneable
,否则应将其从代码中删除。现代Java标准认为Cloneable
接口的设计已被破坏。它的存在仅是因为Java首次发明时就编写了遗留代码。