Как я могу назвать метод eat and drink класса Animal
с экземпляром 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
Вы хотите назвать 'animal' реализации ** без ** реализация 'cat'? – mthmulders
Если у вас нет метода в 'Cat', ведьма вызывает' super.eat(); 'вы не можете сделать это непосредственно из' Cat' – A4L
. Вы не должны ожидать, что ожидаете ... не должны оба с точки зрения определение языка и с точки зрения разумного или желательного желания. Весь смысл полиморфизма наследования заключается в том, чтобы получить то, что вы видите, а не то, что, как вы говорите, ожидаете. –