JavaRush /Java блог /Архив info.javarush /Вопрос на засыпку
realcorwin
14 уровень
Ravensburg

Вопрос на засыпку

Статья из группы Архив info.javarush
Кто может, не залезая в ИДЕЮ, сказать, что выдаст в консоль следующий код и почему? :) class Feline { public String type = "f "; public Feline() { System.out.print("feline "); } } public class Cougar extends Feline { public Cougar() { System.out.print("cougar "); } public void go() { type = "c "; System.out.print(this.type + super.type); } public static void main(String[] args) { new Cougar().go(); } }
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Dolphin9767 Уровень 19
16 июля 2017
1. Запускается конструктор класса Cougar;
2. Перед выполнением конструктора Cougar неявно запускается конструктор родительского класса Feline (super()), он выводит строку «feline »;
3. Продолжает выполнятся конструктор класса Cougar, он выводит «cougar »;
4. После этого идет выполнение метода go(). Присваивается значение переменной type = «c », переменная у нас одна для this и super, поэтому строка System.out.print(this.type + super.type); выведет «c » + «c ».

Вывод: “feline cougar c c ”