スーパークラスのオーバーライドされたメソッドを呼び出すにはどうすればいいですか? 質問する

スーパークラスのオーバーライドされたメソッドを呼び出すにはどうすればいいですか? 質問する

コード内のインスタンスAnimalを使用して、クラスの eat メソッドと drink メソッドを呼び出すにはどうすればよいですか?myAnimal

public class Animal {
    public void eat() {
        System.out.println("Animal Eats");
    }

    public void drink() {
        System.out.println("Animal Drinks");
    }
}

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("Cat Eats");
    }

    @Override
    public void drink() {
        System.out.println("Cat Drinks");
    }

    public static void main(String[] args) {
        Cat myCat = new Cat();
        myCat.eat();
        myCat.drink();

        Animal myAnimal = myCat;        
        myAnimal.eat();
        myAnimal.drink();
    }
}

取得した出力:

Cat Eats
Cat Drinks
Cat Eats
Cat Drinks

予想される出力は次のとおりです。

Cat Eats
Cat Drinks
Animal Eats
Animal Drinks

ベストアンサー1

望むことを実行することはできません。ポリモーフィズムは、見ているものを実行することによって機能します。

基本的に猫は自分が猫であることを常に認識しており、猫、ネコ科、ネコ亜科、ネコ目、食肉目、獣類、哺乳綱、脊椎動物、脊索動物門、真後生動物、動物界、動物、物体、またはその他のものとして扱われるかどうかに関係なく、常に猫のように振る舞います:-)

おすすめ記事