Wie zum Aufruf der überschriebenen Methode der übergeordneten Klasse?

Wie kann ich rufen Sie das Essen und trinken Methode der Animal Klasse mit der myAnimal Instanz im code?

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();
    }
}

Ausgabe, die ich erhalte:

Cat Eats
Cat Drinks
Cat Eats
Cat Drinks

Dies ist meine erwartete Ausgabe:

Cat Eats
Cat Drinks
Animal Eats
Animal Drinks
Sie möchten, rufen Sie die animal Umsetzung ohne die cat Umsetzung?
Es sei denn, Sie haben eine Methode, die in Cat Hexe ruft super.eat(); Sie es nicht direkt von Cat
Sie sollten nicht erwarten, dass das, was Sie erwartet ... sollte das nicht sowohl in Bezug auf die Sprache der definition und im Sinne von dem, was ist vernünftig oder erstrebenswert zu wollen. Der springende Punkt bei der Vererbung-Polymorphismus ist zu bekommen, was Sie sehen und nicht das, was Sie sagen, Sie erwarten.
Während Ihre Bearbeitungen @Michael, beseitigt (!) was als anstößig betrachtet werden können, die in manchen Kreisen, es war ein derber Humor, dass ich (als Katze Liebhaber) anerkannt und mit dem Zusatz von einer Dritten Methode sleep() die ursprüngliche Frage würde Modell Katzen, die ich erlebt habe, ganz gut. Auf der anderen Seite viele Menschen würden nicht einen Klumpen von dem, was wurde umgewandelt, hier... 8-P

InformationsquelleAutor Hisham Muneer | 2013-03-27

Schreibe einen Kommentar