Эта задача мне покая второй день не дает, нужно налаживать отношения с дебагером, а у меня совсем нет понимания, что он, паразит, делает:) Не совсем понятно, как происходит инициализация. Запускаю дебагер. Сначала он создает new B (f:6) и переходит в строчку super(f1), при этом f1 у нас инициализируется 6, вроде все ок. Далее переходит в public A (int f1) и инициализирует f1 = 6, this.f1 пока = 0 (почему он переходит сначало в конструктор, вроде сначала должны инициализироваться нестатические переменные, а затем конструктор? ну даже это пока еще ок. Далее он переходит private int f1 и инициализирует ее равно 7. При повторном нажатии эта строка превращается в f1 = 6, а this.а1 становится равной 7. Почему так происходит? Ведь в конструктор переданно значение 6. И почему private f1 стало равно 6? Следующая строчка initialize, здесь f1 = 6, это значение private f1 или это значение this.f1 на 6 изменилось? Потому что в классе B в методе initialize выводится зачение 9, которое соответсятвует значению полученному из конструктора. мне кажется, я совсем заблудилась в инициализациях переменных.... Если кто-то сможет доходчиво объяснить, буду очень благодарна, ну и конечно плюсик к вашей карме и пара баллов за помощь в решении)) public class Solution { public static void main(String[] args) { new B(6); } public static class A { private int f1 = 7; public A(int f1) { this.f1 = f1; initialize(); } private void initialize() { System.out.println(f1); } } public static class B extends A { protected int f1 = 3; public B(int f1) { super(f1); this.f1 += f1; initialize(); } protected void initialize() { System.out.println(f1); } } }