在抽象类的方法体中引用抽象类的子类的静态字段

Aus*_*Yun 1 java

鉴于以下,在伪代码中

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;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法定义breed()方法,这取决于任何子类调用它的BREEDTIME?bug保证每个子类都已初始化BREEDTIME.

此外,Ants应该繁殖其他Ants,因此在breed()内部调用的构造函数必须是调用breed()的子类类型的构造函数.

我在这里吠叫错了吗?

Fra*_* IV 5

我会使用抽象方法来做到这一点.在您的超类中将getBreedTime()定义为abstract,然后在每个子类中实现它以返回适当的常量.

使用像这样的静态字段,你无法真正做到你想要的.