大家下午好, 我有这个代码:
对象卡妙:
public class Camiao {
private String codigo;
private int contaKm;
private int capacidade;
private String unidade;
private tipoCamiao tipoMotor;
public Camiao() {
}
public Camiao(String codigo, int contaKm, int capacidade, String unidade) {
this.codigo = codigo;
this.contaKm = contaKm;
this.capacidade = capacidade;
this.unidade = unidade;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public int getContaKm() {
return contaKm;
}
public void setContaKm(int contaKm) {
this.contaKm = contaKm;
}
public int getCapacidade() {
return capacidade;
}
public void setCapacidade(int capacidade) {
this.capacidade = capacidade;
}
public String getUnidade() {
return unidade;
}
public void setUnidade(String unidade) {
this.unidade = unidade;
}
}
水池子类:
public class Cisterna extends Camiao {
private String subTipo;
public Cisterna() {
}
public Cisterna(String codigo, int contaKm, int capacidade, String unidade, String subTipo) {
super(codigo, contaKm, capacidade, unidade);
this.subTipo = subTipo;
}
/**
* @return the subTipo
*/
public String getSubTipo() {
return subTipo;
}
/**
* @param aSubTipo the subTipo to set
*/
public void setSubTipo(String aSubTipo) {
subTipo = aSubTipo;
}
}
Mercadorias 子类:
public class Mercadorias extends Camiao {
/*public enum subTipoCamiaoMercadorias {
na, ba;
};*/
private String subTipo;
public Mercadorias() {
}
public Mercadorias(String codigo, int contaKm, int capacidade, String unidade, String subTipo) {
super(codigo, contaKm, capacidade, unidade);
this.subTipo = subTipo;
}
/**
* @return the subTipo
*/
public String getSubTipo() {
return subTipo;
}
/**
* @param aSubTipo the subTipo to set
*/
public void setSubTipo(String aSubTipo) {
subTipo = aSubTipo;
}
}
我将信息添加到数组的位置:
switch (codCamiao2) {
case "CI":camiao[i] = new Cisterna(linha[0], Integer.parseInt(linha[1]), Integer.parseInt(linha[2]), linha[3], linha[4]);
case "BT":camiao[i] = new Camiao(linha[0], Integer.parseInt(linha[1]), Integer.parseInt(linha[2]), linha[3]);
case "FG":camiao[i] = new Camiao(linha[0], Integer.parseInt(linha[1]), Integer.parseInt(linha[2]), linha[3]);
case "MC":camiao[i] = new Mercadorias(linha[0], Integer.parseInt(linha[1]), Integer.parseInt(linha[2]), linha[3], linha[4]);
}
我使用我的子类对象 Cisterna 和 Mercadorias 添加我的信息; 我使用我的主要对象 Camiao 添加信息;
我的问题是我可以在 Camiao 中访问我的 GET 和 SET,但无法在 Cisterna 和 Mercadorias 中访问我的 GET 和 SET。
我使用这段代码来编写,但我需要.getSubTipo()
代码
System.out.println(camiao[x].getCodigo() + "|" + camiao[x].getContaKm() + "|" + camiao[x].getCapacidade() + "|" + camiao[x].getUnidade() + "|");
最佳答案
子类 Cisterna
和 Mercadorias
中似乎没有任何实例 getter/setter。
Cisterna
和 Mercadorias
中的字段 subTipo
是静态的 - 也就是说,在 Cisterna
和 的所有实例之间共享>梅尔卡多利亚
。可能这就是错误,您需要从 subTipo
字段和相关的 getter/setter 方法中删除 static
修饰符。
此外,您需要在每个 case
语句后使用 break
!
String codigo = linha[0];
int contaKm = Integer.parseInt(linha[1]);
int capacidade = Integer.parseInt(linha[2]);
String unidade = linha[3];
String subTipo = linha[4];
switch (codCamiao2) {
case "CI":
camiao[i] = new Cisterna(codigo, contaKm, capacidade, unidade, subTipo);
break;
case "BT":
case "FG":
camiao[i] = new Camiao(codigo, contaKm, capacidade, unidade);
break;
case "MC":
camiao[i] = new Mercadorias(codigo, contaKm, capacidade, unidade, subTipo);
break;
}
关于java - 无法访问数组对象内子类中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61236586/