オブジェクトを作成し、オブジェクトを複製してから、2 つを比較するコードを書いています。
問題のオブジェクトである Octagon は、オブジェクト GeometryObject の拡張です。
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 という名前のファイル内
もう 1 つの 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();
}
}
エラーは、main メソッドの最後の行で発生します。
clone() has protected access in Object
私は Octagaon で clone メソッドの名前を変更しようとしましたが、たとえば cloneme にしましたが、エラーが発生しました:
cannot find symbol
symbol: method cloneme()
location: variable test of type GeometricObject
問題は、オクタゴンが別のオブジェクトを拡張しているためだと思いますか?
私は本当に解決策を見つけることができず、ここで他のすべての clone() 投稿を読むのにかなりの時間を費やしました。
編集:クローンを使用する必要があります。クローンが壊れているという一般的なコンセンサスがあることは承知しています。