java - 为什么继承的方法使用不重新定义的变量?

标签 java oop inheritance

为什么继承的方法 show_hp() Knight 类的变量不使用该类的变量 hp,该变量是在较低层次结构的子类中重新定义的?

我尝试重写方法 show_hp()它有效,但我认为我缺少多态性的概念。

public class scratch {

    public static void main(String[] args) {
            Knight Ricardo = new Knight();
            Ricardo.show_hp();
        }


    static class Hero {
        int hp = 5;

        public void show_hp() {
            System.out.println(" I have " + hp + " hp!");
        }
    }


    static class Knight extends Hero {
        int hp = 3;
    }
}

我期望输出为 3,但实际输出为 5。

最佳答案

Ricardo 这里是 Knight 类的一个实例,具有

hp = 3

因此,如果您希望 hp 的值为 5,那么您应该重写 Knight 类中的一个方法,调用 super 类方法。

或者,您可以避免在子类中重新声明 hp 变量。

关于java - 为什么继承的方法使用不重新定义的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57466215/

相关文章:

java - 打印目录中多个文件的所有内容

java - war 文件的 Gradle flavor

java - 每次调用方法时创建一个新的 Set

JavaScript:Class.method 与 Class.prototype.method

PHP:修改多维数组的最干净方法?

WPF : How to inherit from a base(or default) style in an ItemContainerStyle

java - 用户提供字符串后将 JTextField 中的文本分配给文件

javascript - 如何将其传递到 jquery .change 事件中

oop - 从基类继承许多类是不好的 OOP 实践吗?

java - 如何根据父类计算子类的面积