Scrivo codice per creare un oggetto, clonare l'oggetto, quindi confrontare i due.clone() ha accesso protetto - reso pubblico Oggetto clone()
L'oggetto in questione, Octagon, è un'estensione di un oggetto 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;
}
in un file chiamato Octagon.java
In un altro, TestOctagon.java, è il mio metodo principale:
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();
}
}
Gli errori si verificano sull'ultima riga del metodo principale.
clone() has protected access in Object
Ho provato a cambiare titolo il metodo clone in Octagaon, dico cloneme, ma poi ho l'errore:
cannot find symbol
symbol: method cloneme()
location: variable test of type GeometricObject
ho la sensazione che il problema è perché Octagon si estende un altro oggetto, forse ?
Non riesco davvero a trovare alcuna soluzione, e ho passato una buona ora a leggere tutti gli altri messaggi di clone() qui.
Modifica: È necessario utilizzare clone. Sono consapevole del consenso generale sul fatto che il clone sia bloccato.
Non è possibile sostituire un metodo protetto per essere pubblico. Nella classe 'Octagon' definiscila come' Oggetto protetto clone() ' –