Не удается получить доступ к данным в подклассе внутри объекта массива - PullRequest
0 голосов
/ 15 апреля 2020

Добрый день, люди, у меня есть этот код:

Объект Camiao:

   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;

Моя проблема в том, что я могу получить доступ к своим GET и SET в Camiao, но не могу получить доступ к своим GET и SET в Cisterna и Mercadorias.

Я использую этот код написать, но мне нужно .getSubTipo ()

код

System.out.println(camiao[x].getCodigo() + "|" + camiao[x].getContaKm() + "|" + camiao[x].getCapacidade() + "|" + camiao[x].getUnidade() + "|");

1 Ответ

0 голосов
/ 15 апреля 2020

Похоже, что в подклассах Cisterna и Mercadorias нет никаких экземпляров getter / setters. Поле subTipo в Cisterna и Mercadorias имеет статус c, то есть совместно используется всеми экземплярами Cisterna и Mercadorias. Возможно, это ошибка, и вам нужно удалить модификатор static из поля 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;
}
...