0

我有一个名为ChristopherRobin(的子类HundredAcreWoodsCharacter)的类,其中有一个名为 的方法FindTail()

在另一个类Eeyore(也是的子类HundredAcreWoodsCharacter)中,我想尝试FindTail()使用ChristopherRobin. 我不知道该怎么做。我试过

    if (ChristopherRobin.hasTail())

但这给了我错误:

non-static method hasTail() cannot be referenced from a static context

如果有人可以提供帮助,那就太好了,谢谢。

此外,如果值得一提的是GridWorld(来自 AP 计算机科学案例研究)。HundredAcreWoodsCharacter是 的子类Critter

4

2 回答 2

1

您正在调用class 上的非静态方法,这是无法完成的。您需要先创建一个 ChristopherRobin 对象,然后调用该对象的方法。

// create the ChristopherRobin object and put in the christopherRobin variable
ChristopherRobin christopherRobin = new ChristopherRobin();

// now call the method on the *object* held by the variable
if (christopherRobin.hasTail()) {
  // do something
}
于 2013-04-06T16:00:09.977 回答
0

您可能需要重写 act() ,或者,因为这是 Critter 的子类,所以重写 act() 调用的方法之一。例如,如果有尾巴会影响此 Critter 的移动方式,那么您将覆盖getMoveLocations() 以下是如何使用 hasTail 的示例:

//Critters with tails can only move forward. 
public ArrayList<Location> getMoveLocations() {
   if(this.hasTail()) {
      ArrayList<Location> listOfOne = new ArrayList<Location>();
      listOfOne.add(getLocation.getAdjacentLocation(this.getDirection()) );
      return listOfOne;
   }
   else
      return super.getMoveLocations();
} 
于 2013-04-06T16:29:55.860 回答