鉴于以下,用伪代码
abstract public class Bug {
private static int BREEDTIME;
public void breed() {
if (this.age % this.BREEDTIME) {
world.setAt(new this.class(newX, newY, this.world);
}
}
}
public class Ant extends Bug {
private static int BREEDTIME = 3;
}
public class Doodlebug extends Bug {
private static int BREEDTIME = 8;
}
有没有一种方法可以定义breed()方法,使其依赖于任何子类正在调用它的BREEDTIME?
bug
的每个子类都保证已初始化BREEDTIME。另外,Ant应该繁殖其他Ant,因此在内部品种()中调用的构造方法必须是在其子类中称为繁殖()的类型的构造方法。
我在这里树错树了吗?
最佳答案
我将使用抽象方法来执行此操作。在您的超类中将getBreedTime()定义为抽象,然后在每个子类中实现它以返回适当的常量。
使用这样的静态字段,您无法真正做到所需。
关于java - 在抽象类的方法主体中引用抽象类的子类的静态字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10393699/