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;
            System.out.println("Вызывается конструктор А");
            initialize();
        }

        protected void initialize() {
            System.out.println(f1);
            System.out.println("Вызывается initialize для А");
        }
    }

    public static class B extends A {
        protected int f1 = 3;

        public B(int f1) {
            super(f1);
            System.out.println("Далее конструктор Б");
            this.f1 += f1;
            initialize();
        }

        protected void initialize() {
            System.out.println(f1);
            System.out.println("вызывается initialize для Б");
        }
    }
}
результат: Вызывается конструктор А 0 вызывается initialize для Б Далее конструктор Б 9 вызывается initialize для Б если изменить модификатор доступ для initialize из А:
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;
            System.out.println("Вызывается конструктор А");
            initialize();
        }

        private void initialize() {
            System.out.println(f1);
            System.out.println("Вызывается initialize для А");
        }
    }

    public static class B extends A {
        protected int f1 = 3;

        public B(int f1) {
            super(f1);
            System.out.println("Далее конструктор Б");
            this.f1 += f1;
            initialize();
        }

        protected void initialize() {
            System.out.println(f1);
            System.out.println("вызывается initialize для Б");
        }
    }
}
результат: Вызывается конструктор А 6 Вызывается initialize для А Далее конструктор Б 9 вызывается initialize для Б думал, что в первом случае так, потому что выбор реализации метода зависит от типа вызывающего объекта. т.е. вызывает потомок- метод потомка, однако во втором случае был вызван метод из super-класса