область действия частного конструктора во вложенном классе
Это большеpuzzle чем вопрос. У меня есть следующий код:
public class PrivateBaseConstructor {
public static class BaseClass {
private BaseClass() {
}
}
public static class DerivedClass extends BaseClass {
public DerivedClass() {
super(); // 1*
}
}
}
Здесь призыв кsuper();
в 1 * разрешено событие, хотя конструктор базового классаprivate
, Если мы напишем классы как отдельные классы в одном пакете:
BClass.java
public class BClass {
private BClass() {
}
}
DClass.java
public class DClass extends BClass {
public DClass() {
super(); // 2*
}
Компилятор правильно выдает ошибку при 2 *, поскольку конструктор базового класса не виден.
Почему компилятор не выдает ошибку в моем первом сценарии, когда оба класса объявлены как статические в одном классе?