Reputation:
This is the superclass:
public class Marca implements Cloneable{
public Marca() {
String nome = null;
String descrizione = null;
}
public Marca(String nome,String descrizione ){
this.nome = nome;
this.descrizione = descrizione;
}
//Object
public Marca clone() {
try {
return (Marca) super.clone();
}
catch(CloneNotSupportedException e) {
return null;
}
}
private String nome;
private String descrizione;
}
This is the second class (the subclass) with the problem:
public class Capo_di_abbigliamento extends Marca{
public Capo_di_abbigliamento() {
Marca abbigliamento = new Marca();
String codice = null;
String colore = null;
double prezzo = 0;
}
public Capo_di_abbigliamento(String codice,String colore, double prezzo , String nome , String descrizione)
{
super(nome,descrizione);
this.codice= codice;
this.colore= colore;
this.prezzo= prezzo;
}
public Capo_di_abbigliamento clone() {
try {
Capo_di_abbigliamento cloned = (Capo_di_abbigliamento) super.clone();
cloned.abbigliamento= abbigliamento.clone(); // **THE PROBLEM IS HERE**
return cloned;
}
catch(CloneNotSupportedException e) {
return null;
}
}
private Object abbigliamento;
private String codice;
private String colore;
private double prezzo;
}
This error appear on the public Capo_di_abbigliamento
clone()
"The method clone() from the type Object is not visible".
The problem is the method clone in the capo_di_abbigliamento class. How can i do clone with this class?
Upvotes: 1
Views: 1721
Reputation: 533780
You have a field
private Object abbigliamento;
and it's clone()
method is protected and not visible.
The variable with the same name in your constructor doesn't do anything.
I assume you are not trying to create local variables but initialise the fields.
private Marca abbigliamento;
private String codice;
private String colore;
private double prezzo;
public Capo_di_abbigliamento() {
abbigliamento = new Marca();
codice = null;
colore = null;
prezzo = 0;
}
or
private Marca abbigliamento = new Marca();
private String codice;
private String colore;
private double prezzo;
public Capo_di_abbigliamento() {
}
Upvotes: 1