这是超类:
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;
}
这是有问题的第二个类(子类):
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;
}
此错误出现在公开Capo_di_abbigliamento
clone()
“不可见来自对象类型的方法clone()”。
问题是capo_di_abbigliamento类中的方法克隆。我该如何克隆该课程?
答案 0 :(得分:1)
您有一个字段
private Object abbigliamento;
它的clone()
方法受到保护,不可见。
在构造函数中具有相同名称的变量不会执行任何操作。
我假设您不是要创建局部变量,而是要初始化字段。
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;
}
或
private Marca abbigliamento = new Marca();
private String codice;
private String colore;
private double prezzo;
public Capo_di_abbigliamento() {
}