java - 当我打印我的对象时,对象的物种显示为空,而不是说物种(例如应该说炎魔)

标签 java inheritance arraylist

我需要显示名称、物种名称、生命值和强度。除了物种名称打印为空之外,所有内容都会打印。有什么想法吗?

这是我的主课

if (species.equals("b") || species.equals("B")) {
    Creature balrog = new Creature(name, strength, hit);
    players.add(balrog);
    System.out.println("Current Players: ");
    System.out.println("NAME | SPECIES | STRENGTH | HIT POINTS");
    for (int i = 0; i < players.size(); i++) {
        System.out.println(players.get(i).toString());
    }
}

这是在我的 Creature 类中,它将打印所有内容

public String toString() {
    String result = name;
    result += " | ";
    result += species;
    result += " | ";
    result += strength;
    result += " | ";
    result += hitPoints;
    result += "\n";
    return result;
}

最后,炎魔类,生物的子类

Balrog(String name, int strength, int hit){
    super(name,strength,hit);
}//ends Balrog constructor

String getSpecies(){
    return "Balrog";
}

没有错误消息,它只是在物种名称应该是的地方打印出 null。

最佳答案

您正在创建父类(super class)的实例而不是子类

Creature balrog = new Creature(name, strength, hit);

应该是

Creature balrog = new Balrog(name, strength, hit);

您还需要在 toString 中获取子类的物种

public String toString() {
    String result = name;
    result += " | ";
    result += getSpecies();
    result += " | ";
    result += strength;
    result += " | ";
    result += hitPoints;
    result += "\n";
    return result;

关于java - 当我打印我的对象时,对象的物种显示为空,而不是说物种(例如应该说炎魔),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330656/

相关文章:

java - 我的 Activity 如何在两种布局上运行?

c# - 覆盖具有相同名称但类型不同的属性

java - 在 Java 中获取 Lambda 的结果

android - 如何在 android 的 Canvas 上添加多个可编辑的文本?

java - List Iterator 一个元素的下一个元素

java - 如何制作带有复选框列表(如 setMultiChoiceItems)的自定义对话框,接收和发送数据?

c++ - 是否可以在 C++ 中创建类型声明数组?

python - 将 Django UserCreationForm 的密码验证错误从密码 2 移至密码 1

java - 使用 Java8 Streams 时是否可以获取 ArrayList<Object> 的索引?

java - SunPkcs11 实现的 64 位替代方案