Ich schreibe Code, um ein Objekt zu erstellen, klonen Sie das Objekt, dann vergleichen Sie die beiden.clone() hat geschützten Zugriff - public Objekt clone()
Das Objekt in Frage, Octagon, eine Erweiterung eines Objekts GeometricObject ist
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;
}
In einer Datei namens Octagon.java
In einer anderen, TestOctagon.java, ist meine Hauptmethode:
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();
}
}
Die Fehler treten in der letzten Zeile der Hauptmethode auf.
clone() has protected access in Object
Ich habe versucht, die Klon-Methode in Octagaon umbenennen, sagen cloneme, aber dann bekomme ich den Fehler:
cannot find symbol
symbol: method cloneme()
location: variable test of type GeometricObject
Ich habe das Gefühl, das Problem ist, weil Octagon ein anderes Objekt erstreckt, vielleicht ?
Ich kann wirklich keine Lösung finden, und ich habe eine gute Stunde damit verbracht, alle anderen clone() Beiträge hier zu lesen.
Bearbeiten: Es ist erforderlich, ich verwende Klon. Ich bin mir bewusst, dass der allgemeine Konsens ist, dass der Klon geborken wird.
Sie können keine geschützte Methode außer Kraft setzen Öffentlichkeit. In Ihrer 'Octagon' Klasse definieren Sie es als' protected Object clone() ' –