在java中作为私有成员变量的函数
我正在设计一种垄断游戏来练习我的Java技能 我希望有一个“Space”类来表示游戏板上的空间。像这样的在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):
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思维定势进行思考。谢谢