0

私はJavaとポリモーフィズムを学んでいます。私はJavaでブックヘッドスタートを使用しています。私はそれらを実験しようとしていました。呼び出すことができるメソッドは参照オブジェクトに依存することを学びました。そこで、このコードを作成しました

package animals;

public class AnimalstestDrive {

    static public Animals[] myZoo = new Animals[5];
    static int zooCounter = 0;

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println("Dog 1 test");
        Dog myDog = new Dog();
        myDog.eatFood();
        myDog.sleep();
        myDog.makeNoises();

        System.out.println("Dog 2 test");
        Animals myNewDog = new Dog();
        myNewDog.eatFood();
        myNewDog.makeNoises();

        //Set animals array
        System.out.println("Dog 3 test");
        Animals zooDog = new Dog();
        addAnimals(zooDog);

        Cat zooCat = new Cat();
        addAnimals(zooCat);

        myZoo[0].makeNoises();


    }

    public static void addAnimals(Animals a){
        if ( zooCounter < 5 ){
            myZoo[zooCounter] = a;
            zooCounter++;
        }
        else
            System.out.println("Zoo is full");
    }
}

問題の原因の 1 つは、「Dog 3 テスト」がコンソールに表示されないことです。IT は Dog 2 まで正常に動作していますが、Dog 3 は動作していません。

ここに私の動物のクラスがあります

package animals;

public abstract class Animals {
    private String Name;
    private int Size; //Size on the scale 1 to 10

    public void eatFood(){
        System.out.println("I am eating food");
    }

    public void sleep(){
        System.out.println("I am sleeping now");
    }

    abstract public void makeNoises();

}
4

1 に答える 1