我正在设计一种Monopoly游戏来练习我的Java技能。
我希望有一个“太空”类来代表游戏板上的空间。这样的事情。
public class Space{
private Player [] occupants;
private String name;
public Space(String name){
this.name = name;
}
}
我来自python背景,所以如果我这样做,我可能会用某种“动作”功能初始化每个空间,每个路径都是唯一的。所以这样的东西。
class Space():
def __init__(self, name):
self.name = name
self.action = None
GO_SPACE = Space()
def GO_ACTION():
## do some processing
GO_SPACE.action = GO_ACTION
基本上将运行时的函数分配给Space对象。我不记得我的语法是否恰到好处,但希望很清楚我想要做什么。每个空间都有自己独特的功能,可以在玩家登陆时处理动作。
我仍然愿意改变事物的架构方向,但我如何在Java中做这样的事情呢?我承认,我对Java的了解有点生疏,但我首先想到的是尝试以某种方式为私有成员变量分配一个函数......这种方法是否已经过时了?我不记得Java是否具有对象或类似的功能。
答案 0 :(得分:2)
我不明白为什么你需要这种动态。为什么不这样:
public abstract class Space {
// name etc.
public abstract void action();
}
public class GoSpace extends Space {
public void action() {
// collect 200 dollars
}
}
等
答案 1 :(得分:2)
即使使用Java 8,Java中函数的最佳近似值也是单方法接口。例如,您可以将action
声明为Runnable并将其调用为action.run()