0

私はプロジェクトに取り組んでおり、ここで助けが必要です。をAnimalWorld拡張WorldするElephantクラスと、拡張するクラスがありますTurtle。私の象のact()メソッドでは、メソッド ( ) を使用したいのですがpublic List getTurtleList()、これはWorld(and AnimalWorld) にしかありません。行を追加してみました

public abstract List<Turtle> getTurtleList();

AnimalWorld に移動し、Elephant を抽象クラスに設定しましたが、「シンボルが見つかりません -getTurtleList() 何か考えはありますか? 」というエラーが表示されます。さらに情報が必要な場合は、お知らせください。また、作成された象は AnimalWorld に配置されるため、Elephant は 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()する必要があるかもしれません。AnimalWorldElephant

于 2012-12-04T08:46:56.110 に答える