下午好,
我有以下代码:

卡米奥对象:

   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;
    }
}


Cisterna子类:

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子类中没有任何实例获取器/设置器。
subTipoCisterna中的字段Mercadorias是静态的-即在CisternaMercadorias的所有实例之间共享。可能是错误,您需要从static字段和相关的getter / setter方法中删除subTipo修饰符。

另外,您需要在每个break语句之后使用case

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;
}

08-16 20:38