Java从子类中获取String

标签 java class

想象一下我有这个:

public class Animal {
    private String racaAnimal;
    private String corAnimal;

    public String getCorAnimal() {
        return this.corAnimal;
    }

    public String getRacaAnimal() {
        return this.racaAnimal;
    } 

            public Animal getAnimaisCliente(int indice) {
                    return this.animaisCliente[indice];
            }  
}

public class Estimacao extends Animal{
    private String nomeAnimal;

    public String getNomeAnimal() {
        return nomeAnimal;
    }
}

public class Cliente{
    private Animal[] animaisCliente;
}

构造函数没有显示,但它们工作正常。

我有一个包含所有客户端的数组列表

ArrayList<Cliente> clientes = new ArrayList<Cliente>();

动物是这样被创造出来的

Estimacao animaisEstimacao = new Estimacao(nomeAnimal,racaAnimal,corAnimal);

然后将其添加到Cliente中的Animal数组中

现在如果我这样做:

System.out.println(" Raça: " + clientes.get(0).getAnimaisCliente(0).getRacaAnimal());

它有效。 但是我如何从 Estimacao 类中获取 nomeAnimal 呢?

如果我放

System.out.println(" Nome: " + clientes.get(0).getAnimaisCliente(0).getNomeAnimal());

它不起作用。

从子类中我们可以从父类(super class)中获取东西,但反之亦然?这可能吗?

最佳答案

您需要将您的Animal 转换为Estimacao。但显然,如果您不想冒异常风险,请先确保您的 Animal 属于正确的类别:

Animal animal = clientes.get(0).getAnimaisCliente(0);
if (animal instanceof Estimacao) {
    System.out.println(" Nome: " + ((Estimacao) animal).getNomeAnimal());
}

关于Java从子类中获取String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8433751/

相关文章:

java - 在 JPA (eclipselink) 的 UPDATE CASCADE 上创建外键

java - 尝试在 Optaplanner 中添加一个值(使用 Drools)

python - 没有 self 的内部类功能

c++ - 类扩展 GtkWindow

ruby-on-rails - Rails 保留类名称

c++ - 无法从委托(delegate)构造函数中的初始值设定项列表初始化 vector

java - java 可以从泛型之上定义的类推断出泛型类型吗?

java - 无法调用java中的函数

java - 如何向 JOptionPane.showInputDialog 上的按钮添加命令

python - 确保两个 Python 类具有相同名称的属性