zakres prywatnego konstruktora w klasie zagnieżdżonej

To więcej niżpuzzle niż pytanie. Mam następujący kod:

public class PrivateBaseConstructor {
    public static class BaseClass {
        private BaseClass() {
        }

    }

    public static class DerivedClass extends BaseClass {
        public DerivedClass() {
            super(); // 1*
        }
    }
}

Oto wezwaniesuper(); w 1 * dozwolone jest zdarzenie, chociaż konstruktor klasy bazowej jestprivate. Jeśli piszemy klasy jako oddzielne klasy w tym samym pakiecie:

BClass.java
public class BClass {
    private BClass() {

    }
}

DClass.java
public class DClass extends BClass {
    public DClass() {
        super(); // 2*
    }

Kompilator słusznie podaje błąd 2 *, ponieważ konstruktor klasy bazowej nie jest widoczny.

Dlaczego kompilator nie zgłasza błędu w moim pierwszym scenariuszu, gdy obie klasy są deklarowane jako statyczne w jednej klasie?

questionAnswers(3)

yourAnswerToTheQuestion