Umfang des privaten Konstruktors in der verschachtelten Klasse

Das ist eher einPuzzle als frage. Ich habe folgenden Code:

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

    }

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

Hier der Ruf nachsuper(); at 1 * ist erlaubt, obwohl der Basisklassenkonstruktor dies istprivate. Wenn wir die Klassen als separate Klassen in dasselbe Paket schreiben:

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

    }
}

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

Der Compiler gibt bei 2 * zu Recht einen Fehler aus, da der Basisklassenkonstruktor nicht sichtbar ist.

Warum gibt der Compiler in meinem ersten Szenario keinen Fehler aus, wenn beide Klassen innerhalb einer Klasse als statisch deklariert wurden?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage