我正在编写代码来创建一个对象,克隆这个对象,然后比较这两个对象。
所涉及的对象Octagon是GeometricObject对象的扩展。
public class Octagon extends GeometricObject implements Comparable<Octagon>, Cloneable {
private double side;
public Octagon (double side){
this.side = side;
}
public Object clone() throws CloneNotSupportedException {
Octagon octClone = (Octagon)super.clone();
return octClone;
}
在名为Octagon.java的文件中。
另一个名为TestOctagon.java的文件中,包含我的主方法:
public class TestOctagon {
public static void main(String[] args) {
GeometricObject test = new Octagon(5); //create an Octagon with a side of 5
System.out.println("Area is: "+test.getArea());
System.out.println("Perimeter is: "+test.getPerimeter());
Octagon copy = (Octagon)test.clone();
}
}
错误出现在主方法的最后一行。
clone() has protected access in Object
我尝试将Octagaon中的克隆方法重命名为cloneme,但是我遇到了以下错误:
cannot find symbol
symbol: method cloneme()
location: variable test of type GeometricObject
我感觉问题可能是因为八边形扩展了另一个对象导致的,也许?
我真的找不到任何解决方案,我已经花了一个小时阅读这里所有关于clone()的帖子。
编辑:需要使用clone。我知道普遍意见是clone有问题。
Octagon
类中,将其定义为protected Object clone()
。 - Rob Watts