Что выведет код Junior ООП и класс Object обновлено
Что выведет: полиморфизм и super
Вопрос
Что выведет программа (Java 21)? Каждый вывод println с новой строки.
public class Main {
static class Animal {
String sound() { return "..."; }
String speak() { return "I say " + sound(); }
}
static class Dog extends Animal {
@Override String sound() { return "woof"; }
String parent() { return super.sound(); }
}
public static void main(String[] args) {
Animal a = new Dog();
System.out.println(a.speak());
System.out.println(((Dog) a).parent());
System.out.println(new Animal().speak());
}
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: I say woof, ..., I say ... speak() объявлен в Animal, но внутри вызывает sound() динамически: для объекта Dog это woof. super.sound() явно вызывает реализацию родителя.
Что выведет
I say woof
...
I say ...
Разбор
speak() объявлен в Animal, но внутри вызывает sound() динамически: для объекта Dog это woof. super.sound() явно вызывает реализацию родителя. У обычного Animal своя реализация ....
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.