鉴于以下,用伪代码

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/

10-12 01:42