Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
public class Main {
public static void main(String[] args) {
Animal a = new Cat();
a.sound();
}
}
class Animal {
void sound() { System.out.print("..."); }
}
class Cat extends Animal {
@Override void sound() { System.out.print("Meow"); }
}Meow
- Ждать
...: объявленный типAnimalтолько разрешает вызватьsound, а версию, которая выполнится, выбирает объект —Cat. - Ждать
...Meow: переопределение заменяет метод родителя; версия родителя выполнится, только если вызватьsuper.sound().
- Что напечатала бы программа, если бы
Catне переопределялsound? - Почему
a.purr()не компилируется, хотя уCatесть методpurr?