package com.javarush.task.task20.task2023;

/*
Делаем правильный вывод
*/
public class Solution {
    public static void main(String[] s) {
        A a = new C();
        a.method2();
    }

    public static class A {
        private void method1() {
            System.out.println("A class, method1");
        }

        public void method2() {

            System.out.println("A class, method2");
            method1();
        }
    }

    public static class B extends A {
        private void method1() {
            super.method2();
            System.out.println("B class, method1");
        }

        public void method2() {
            System.out.println("B class, method2");
        }
    }

    public static class C extends B {
        public void method1() {
            System.out.println("C class, method1");
        }

        public void method2() {
            System.out.println("C class, method2");
            super.method1();
        }
    }
}
Почему компилятор позволяет здесь доступ через метод подкласса к приватному методу суперкласса? Предполагаю, что вложенные классы во всем виноваты (поскольку без вложенных классов, как положено, запрещает), но хотелось бы узнать конкретный механизм.