Come posso chiamare il metodo mangia e bibita della classe Animal
con l'istanza myAnimal
nel codice?Come chiamare il metodo sovrascritto di una superclasse
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();
}
}
uscita che sto ottenendo:
Cat Eats
Cat Drinks
Cat Eats
Cat Drinks
Questo è il mio risultato atteso:
Cat Eats
Cat Drinks
Animal Eats
Animal Drinks
Si desidera chiamare il 'animal' implementazione ** ** senza l'implementazione 'cat'? – mthmulders
A meno che tu non abbia un metodo in 'Cat' witch chiama' super.eat(); 'non puoi farlo direttamente da' Cat' – A4L
Non devi aspettarti quello che ti aspetti ... non dovrebbe entrambi in termini di la definizione della lingua e in termini di ciò che è ragionevole o desiderabile desiderare. L'intero punto del polimorfismo dell'ereditarietà è ottenere quello che stai vedendo e non quello che dici che ti aspetti. –