【发布时间】:2019-09-15 15:44:48
【问题描述】:
我正在尝试创建一个抽象超类Race,它由我的蚂蚁作为通用实现,以便我可以访问蚂蚁的“移动速度”等属性。对于不同的种族,我将创建扩展Race 的类,并且显然我想为每个Race 赋予不同的属性。 “运动速度”在Race 中必须是静态的,所以我可以通过类而不是对象的实例来访问它们,但它不能是静态的,因为它对于所有种族都是一样的。我需要一种方法来规避这个问题,因为我的整个程序结构都依赖于它。
我不能让Race 成为Ant 的超类,因为我有Ant 的子类,例如Drone 或Queen,它们应该适用于所有种族。
public abstract class Race {
public static double speed;
}
public class defaultAnt extends Race {
public static double speed = 2;
}
public abstract class Ant<R extends Race> {
public void move(){
speed = R.speed;
}
}
当我这样尝试时,所有种族都一样,尽管不应该这样。
【问题讨论】:
-
static字段绑定到类而不是这些类的实例。 -
嗨!当您提出问题时,文本区域右侧有一个很大的如何格式化框,其中包含有用的信息。还有一个工具栏,里面装满了格式化辅助工具。还有一个 [?] 按钮提供格式化帮助。 和一个预览区域,显示您的帖子在发布时的样子,位于文本区域和“发布您的问题”按钮之间(因此您必须滚动过去才能找到该按钮,以获取你看它)。使您的帖子清晰,并表明您花时间这样做,可以提高您获得好答案的机会。这次我给你修好了。
-
我只是在我的回答中给出了一个模糊的提示,你应该做什么而不是在这里使用静态。问题是:要给出更好的答案,我必须更好地理解您的问题。它的开头是:您是说“种族”之类的“物种”,还是您的意思是“种族”之类的“赛车比赛”?
-
我知道静态意味着什么,我看到了问题,我正在寻找如何解决问题的想法,而对于种族,我的意思是物种,我认为这更明显
标签: java generics inheritance static