所以我正在为我的Java类工作,我无法找到一种方法来引用子类中的子字段,而不必通过构造函数传递它们。
例如,我希望我的父类有这个方法:
@Override
public String getImageFileName() {
String result = IMG_DEAD;
if (isAlive()) {
result = IMG_ALIVE;
}
return result;
}
我希望在我的孩子中定义IMG_DEAD和IMG_ALIVE的字符串,因为每个孩子都会有不同的字符串。
最好的方法是什么?我已经尝试过使用静态字段,但我总是最后引用我父母的字段。
我让它只是通过构造函数传递值,但如果有更好的方法,我宁愿不必这样做。这些变量也应该是静态的,因为它们对于每个类都是常量。
答案 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
。