从静态方法中运行对象的方法

时间:2014-01-27 16:13:37

标签: static-methods

我有两个班:Board,Player。 Board类使用静态方法来计算当玩家落在棋盘上某个空间时会发生什么。

我将玩家对象p1传递给Board类。 Board类中的一个静态方法需要访问p1对象中的方法。我基本了解静态方法属于类而不是实例,但是有没有办法在不使p1静态的情况下访问p1的方法?

1 个答案:

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