Я пишу код для создания объекта, клонирования объекта, а затем сравнения двух.
Объект, о котором идет речь, 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
Я пробовал переименовать метод clone в Octagaon, скажем cloneme, но потом я получаю сообщение об ошибке:
cannot find symbol
symbol: method cloneme()
location: variable test of type GeometricObject
Мне кажется, проблема в том, что Octagon расширяет еще один объект, может быть?
Я действительно не могу найти решение, и я потратил хороший час на чтение всех других сообщений clone() здесь.
Изменить: мне нужно использовать клон. Я знаю, что общий консенсус заключается в том, что клон срывается.