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

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

Статья из группы Архив 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, 10:32
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 ”
realcorwin
Уровень 14
17 июля 2017, 00:12
Всё так :).