Java:从父类引用子级中的字段

时间:2016-10-20 23:38:42

标签: java polymorphism

所以我正在为我的Java类工作,我无法找到一种方法来引用子类中的子字段,而不必通过构造函数传递它们。

例如,我希望我的父类有这个方法:

@Override
    public String getImageFileName() {     
        String result = IMG_DEAD;
        if (isAlive()) {
            result = IMG_ALIVE;
        }
        return result;
    }

我希望在我的孩子中定义IMG_DEAD和IMG_ALIVE的字符串,因为每个孩子都会有不同的字符串。

最好的方法是什么?我已经尝试过使用静态字段,但我总是最后引用我父母的字段。

我让它只是通过构造函数传递值,但如果有更好的方法,我宁愿不必这样做。这些变量也应该是静态的,因为它们对于每个类都是常量。

1 个答案:

答案 0 :(得分:2)

听起来每个孩子都需要提供相关细节。执行此操作的最佳方法通常是父级中子级覆盖的方法,如下所示:

protected String imageFileName(boolean alive) {
    return alive ? DEFAULT_IMG_ALIVE : DEFAULT_IMG_DEAD;
}

然后,在您的子类中,重写该方法:

@Override
protected String imageFileName(boolean alive) {
    return alive ? GRUE_IMG_ALIVE : GRUE_IMG_DEAD;
}

如果您想要要求来自孩子的图片而没有默认设置,请改为使用父方法abstract