2014-01-27 31 views
0

我有两个类:Board,Player。委员会类使用静态方法来计算当玩家登上棋盘上的特定空间时发生的情况。从静态方法内运行对象的方法

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

回答

0

Offcourse你可以调用播放器的实例方法,因为你有参考Player对象

class Board{ 
    public static void land(Player p1){ 
    p1.performAction(); 
    } 
} 

你不能做什么,是调用板类的一个实例方法,因为不执行板类的静态方法在一个实例的情况下。

因此,编译器会吐出错误,如果你尝试这样做 -

class Board{ 
     public static void land(){ 
     performAction(); 
     } 
     private void performAction(){ 
       //instance method 
     } 

    } 

但是,您可以调用从另一个实例方法实例方法,下面将工作 - 因为虽然从的performAction调用doAction() ()你已经在一个实例的背景下

class Board{ 

     private void performAction(){ 
       doAction(); 
     } 

     private void doAction(){ 
     } 
    }