Что выведет код 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 ошибок.