gpt4 book ai didi

java - 无法访问数组对象内子类中的数据

转载 作者:行者123 更新时间:2023-12-01 17:24:06 25 4
gpt4 key购买 nike

大家下午好,我有这个代码:

对象卡妙:

   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() + "|");

最佳答案

子类 CisternaMercadorias 中似乎没有任何实例 getter/setter。CisternaMercadorias 中的字段 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com