在java中作为私有成员变量的函数

时间:2014-12-23 17:12:28

标签: java function object dynamic private-members

我正在设计一种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是否具有对象或类似的功能。

2 个答案:

答案 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()