我有两个班:Board,Player。 Board类使用静态方法来计算当玩家落在棋盘上某个空间时会发生什么。
我将玩家对象p1传递给Board类。 Board类中的一个静态方法需要访问p1对象中的方法。我基本了解静态方法属于类而不是实例,但是有没有办法在不使p1静态的情况下访问p1的方法?
答案 0 :(得分:0)
当你参考玩家对象时,你可以调用播放器的INSTANCE方法
class Board{
public static void land(Player p1){
p1.performAction();
}
}
你不能做的是调用INSTANCE METHOD OF BOARD类,因为板类中的静态方法不是在实例的上下文中执行。
因此,如果您尝试执行此操作,编译器将吐出错误 -
class Board{
public static void land(){
performAction();
}
private void performAction(){
//instance method
}
}
但是,您可以从另一个实例方法调用实例方法,下面可以工作 - 因为从performAction()调用doAction()时,您已经在实例的上下文中
class Board{
private void performAction(){
doAction();
}
private void doAction(){
}
}