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

标签 java arrays object subclass

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

对象卡妙:

   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/

相关文章:

java - 创建包含用户特定数据的 WebSocket session 的最安全方法

Java链表与对象 - 空指针异常

c# - float 组重采样

javascript将对象传递给函数

java - 我如何获得xjc?

java - 在 Android 手机上模拟低 RAM

c++ - 我正在努力寻找随机数组中的最小值,有人知道为什么我的代码不起作用吗? C++

c - 使用数组生成序列?

javascript - 如何最好地比较 JavaScript 中的两个多级对象以找出差异?

java - 遗传算法的数组帮助