0

我正在做一个项目,我需要一些帮助。我有一个AnimalWorld可以扩展的类World和一个可以扩展的类。在我的大象方法中,我想使用一个方法(),它只在(和)中找到。我试过添加这条线ElephantTurtleact()public List getTurtleList()WorldAnimalWorld

public abstract List<Turtle> getTurtleList();

到 AnimalWorld,并将 Elephant 设置为抽象类,但我仍然收到错误“找不到符号 - 有getTurtleList() 什么想法吗?如果您需要更多信息,请告诉我。此外,Elephant 不会扩展 AnimalWorld,因为创建的大象将被放置在 AnimalWorld 中。

public abstract class Elephant extends Turtle implements Animal{

    public Elephant(ModelDisplay world){

        super(world);
        this.penUp();
        this.setColor(Color.gray);
        this.setWidth(50);
        this.setHeight(50);
    }

    public void act(ModelDisplay myWorld){
        double smallestDist = 640.0;

        Mouse closestMouse = null;
        List<Turtle> animalList = myWorld.getTurtleList();

        for(Turtle curCritter: animalList){
            if(curCritter instanceof Mouse){
                int x=curCritter.getXPos();
                int y=curCritter.getYPos();
                double dist = this.getDistance(x,y);

                if(dist < 100 && dist<smallestDist){
                    closestMouse=curCritter;
                    smallestDist=dist;
                }
            }
        }

        if(closestMouse!=null){
            this.turn(closestMouse);
            this.forward(3*(int)smallestDist);
        }
    }
}
4

1 回答 1

0

声明World类为:

public abstract class World{
    ...

    public abstract List<Turtle> getTurtleList();
}

将强制您实现getTurtleList()在每个继承自World. 如果不是,您将被迫将子类也声明为抽象类。这就是你被迫声明Elephant为抽象类的原因,因为它没有实现超类的所有抽象方法。

也许您需要实现getTurtleList()inAnimalWorld或 in Elephant

于 2012-12-04T08:46:56.110 回答