java - 父类(super class)方法获取子类变量

标签 java subclass superclass

我有一个父类(super class)和一个子类。在父类(super class)中,我尝试使用方法从子类获取变量。我有 2 个子类,每个子类对此变量都有不同的值。我该怎么做呢?它是这样的:

public class SuperClass{

protected int health;

public int getHealth()
{
    return health;
}

然后我有我的子类:

public class SubClass1 extends SuperClass{

private int health = 30;

public SubClass1() {
    super();
}
}

public class SubClass2 extends SuperClass{

private int health = 50;

public SubClass2() {
    super();
}
}

然后我尝试使用 JTestUnit 进行测试:

public class SubClass1{

@Test
public void testGetHealth()
{
    SubClass1 unit = new SubClass1();
    assertEquals(unit.getHealth(), 30);
}

但是这不起作用。如何根据我正在创建的 SubClass1 或 SubClass2 对象(实例?)获取该值?提前致谢!

最佳答案

删除

private int health = 30;

它声明了一个新变量,其名称隐藏了父类(super class)中的变量。

并在构造函数中初始化

public SubClass2() {
    super();
    health = 30;
}

关于java - 父类(super class)方法获取子类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27274663/

相关文章:

java - 将 JTextField 的输入限制为双数?

java - List<A> 引用 List<subclass-of-A>

c++ - 子类 QDial 如何停止从 Min 到 Max 的移动?

java - 内部类访问 protected 外部类super时如何避免 `IllegalAccessError`

java - 如何为其他泛型类声明抽象泛型父类(super class)?

python - 子类、意外参数和 Unresolved 引用的问题

java - 如何在使用 Jackson 将 json 转换为 Java 对象时忽略 Map 相关的大括号

java - 如果将成员数据声明为原始数据类型,如果对象被声明为可序列化,值是否会被序列化?

java - T::class.java.newInstance() 已弃用

java - 未调用子类抽象方法