java - 将子类属性与父类方法一起使用
问题描述
好的,我很确定我在这里遗漏了一些东西,但这是我的问题:我有一个抽象父类,其中我有一个已定义(非抽象)的方法,对于所有子类都是相同的。问题是,它需要访问调用它的子类对象的属性。但它并没有这样做,而是使用抽象类的(未定义)属性。
我觉得有一个简单的解决方案,但我想不出。
代码父:
public abstract class Background
{
private boolean fadeTriggered;
private int flagFade;
public void checkFade(Background fadeFrom, Background fadeInto, SpriteBatch batch, ParallaxBackground parallaxBackground) {
//Clean up
if (fadeFrom.getFadeTriggered()) {
fadeFrom.setFadeTriggered(false);
if (fadeFrom.getFlagFade() > 0) {
fadeFrom.setFlagFade(0);
}
}
//Fade
if (!fadeTriggered) {
fadeTriggered = true;
flagFade = 1000;
}
if (flagFade > 0) {
parallaxBackground.draw(batch, this.getID(), 1);
parallaxBackground.draw(batch, fadeInto.getID(), flagFade * .001f);
flagFade--;
} else {
parallaxBackground.draw(batch, this.getID(), 1f);
}
}
}
代码子:
public class BackgroundSnow extends Background {
private ArrayList<ParallaxTexture> textures;
private int textureCount;
private final String biomeName = "Default";
private final int id = 1;
protected boolean fadeTriggered = false;
protected int flagFade = 0;
public BackgroundSnow() {
int i = 1;
while (true) {
if (!Gdx.files.internal("backgrounds/parallax/" + biomeName + "/img" + i + ".png").exists()) {
this.textureCount = i - 1;
break;
}
i++;
}
Printer.debugPrintToConsole(ParallaxBackground.class, "Parallax Backgrounds found: " + Integer.toString(textureCount));
textures = new ArrayList<>();
for (int j = 1; j < textureCount + 1; j++) {
textures.add(new ParallaxTexture(j, biomeName));
}
}
}
然后你用子类的一些实例调用 checkFade
解决方案
父类中的私有字段和子类中的受保护字段不应具有相同的字段,这会造成混淆。
如果可能,从子类中删除受保护的fadeTriggered和flagFade,将 getter 和 setter 移动到父类(或者如果缺少则创建它们),你应该会很好。
并且为了清洁,在访问这些字段时,还要使用父类中的 getter 和 setter。
推荐阅读
- github - 如何在 github 操作上创建 for/foreach 循环?
- reactjs - Redux-mock-store:无法将所有已调度的操作放入模拟存储中
- wordpress-gutenberg - 我们可以在 Wordpress 页面中隐藏仍然显示在摘要块中的标题元素吗?
- r - 如何总结R中某个区域的观察发生情况?
- java - 如何在邮递员中为此特定方法传递请求参数?
- pine-script - 如何检查窗格是否为对数比例?
- node.js - 防止 Mongo DB 中的重复文档
- python - 如何根据 M2M 关系在 django 模型中自动填充 IntegerField?
- java - 使用复合键的 JPA 多对一映射
- javascript - react-beautiful-dnd:拖放列表时防止闪烁