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

在java中作为私有成员变量的函数,java,function,object,dynamic,private-members,Java,Function,Object,Dynamic,Private Members,我正在设计一种垄断游戏来练习我的Java技能 我希望有一个“Space”类来表示游戏板上的空间。像这样的 public class Space{ private Player [] occupants; private String name; public Space(String name){ this.name = name; } } class Space(): def __init__(self, name):

我正在设计一种垄断游戏来练习我的Java技能

我希望有一个“Space”类来表示游戏板上的空间。像这样的

public class Space{

    private Player [] occupants;
    private String name;

    public Space(String name){
        this.name = name;
    }

} 
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 
我来自python背景,所以如果我是这样做的,我可能会用某种“动作”函数初始化每个空间,每个路径都是唯一的。像这样

public class Space{

    private Player [] occupants;
    private String name;

    public Space(String name){
        this.name = name;
    }

} 
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 
本质上是在运行时将函数分配给空间对象。我不记得我的语法是否正确,但希望我想做的事情很清楚。每个空间都有自己独特的功能来处理玩家降落时的动作


我仍然愿意改变事物的体系结构方向,但是在Java中如何做这样的事情呢?我承认,我对Java的知识有些生疏,但我的第一个想法是尝试以某种方式为私有成员变量分配一个函数。。。这条路远吗?我不记得Java是否有作为对象的函数或类似的东西。

我不明白为什么需要动态的函数。为什么不这样做:

public abstract class Space {
    // name etc.
    public abstract void action(); 
}

public class GoSpace extends Space {
    public void action() { 
       // collect 200 dollars
    }
}

等等。

我不明白为什么需要动态的。为什么不这样做:

public abstract class Space {
    // name etc.
    public abstract void action(); 
}

public class GoSpace extends Space {
    public void action() { 
       // collect 200 dollars
    }
}

等等。

即使使用Java 8,Java中函数的最佳近似值也是一个方法接口。例如,您可以将
操作
声明为,并将其调用为
操作.run()

即使使用Java 8,Java中函数的最佳近似值也是单个方法接口。例如,您可以将
操作
声明为,并将其作为
操作调用。run()

Java8添加了lambdas。谢谢!我不知道。我来看看。Java8添加了lambdas。谢谢!我不知道。我来看看。这是个有趣的主意。。那么基本上每个空间都扩展了空间类?我喜欢这种方法。有这么多的子类(我想是40个,或者不管板上有多少空格)会有什么负面影响吗?如果没有,我想我会接受这个答案。我会为每个磁贴创建属性文件,而不是为每个磁贴创建一个类。从没听说过。。它是json/初始化类型的东西吗?@Zack:不,在java中有很多类是很常见的。类是java中的基本单元,一切都是类。另外请注意,我不确定您是否真的需要其中的40个空间,因为董事会上的40个空间中的大多数没有任何特殊操作。您可以使基类非抽象,并使用它来表示那些“普通”空间。如果你想处理“每个文件的一个公共类”的愚蠢java规则,你也可以考虑让基类内部的特殊子类。或者,如果这样做有意义的话,将其非公开。这是一个有趣的想法。。那么基本上每个空间都扩展了空间类?我喜欢这种方法。有这么多的子类(我想是40个,或者不管板上有多少空格)会有什么负面影响吗?如果没有,我想我会接受这个答案。我会为每个磁贴创建属性文件,而不是为每个磁贴创建一个类。从没听说过。。它是json/初始化类型的东西吗?@Zack:不,在java中有很多类是很常见的。类是java中的基本单元,一切都是类。另外请注意,我不确定您是否真的需要其中的40个空间,因为董事会上的40个空间中的大多数没有任何特殊操作。您可以使基类非抽象,并使用它来表示那些“普通”空间。如果你想处理“每个文件的一个公共类”的愚蠢java规则,你也可以考虑让基类内部的特殊子类。或者,如果有意义的话,让他们非公开。亲爱的,我也会看看这个。我主要想获得一些不同的观点,以帮助我跳出python思维定势进行思考。谢谢亲爱的,我也来看看。我主要想获得一些不同的观点,以帮助我跳出python思维定势进行思考。谢谢