Piszę kod, aby utworzyć obiekt, sklonować obiekt, a następnie porównać dwa.Klon() ma chroniony dostęp - publiczny klon obiektu()
dany obiekt, Octagon, stanowi rozszerzenie przedmiotu 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;
}
w pliku o nazwie Octagon.java
w innym, TestOctagon.java, jest moim głównym metoda:
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();
}
}
Błędy pojawiają się w ostatnim wierszu metody głównej.
clone() has protected access in Object
Próbowałem zmiany nazwy metody klonowania w Octagaon, powiadam cloneme, ale potem pojawia się błąd:
cannot find symbol
symbol: method cloneme()
location: variable test of type GeometricObject
Mam wrażenie, że problem jest z powodu Octagon rozciąga się inny obiekt, może ?
Naprawdę nie mogę znaleźć rozwiązania, a ja spędziłem dobrą godzinę czytając wszystkie inne posty clone() tutaj.
Edycja: Jest to wymagane Używam klonu. Zdaję sobie sprawę, że ogólny konsensus jest zepsuty.
Nie można zastąpić zabezpieczoną metodę jawne. W swojej klasie 'Octagon' zdefiniuj go jako' protected Object clone() ' –