Что такое модификатор доступа конструктора по умолчанию в Java?

Мы все знаем, что если мы не определяем конструктор специально, компилятор вставляет невидимый конструктор с нулевым параметром. Я думал, что его модификатор доступа был публичным, но, имея дело с проблемой внутреннего класса, я обнаружил, что, возможно, я ошибался. Вот мой код:

public class Outer {
  protected class ProtectedInner {
    // adding a public constructor will solve the error in SubOuterInAnotherPackage class
    //public ProtectedInner() {}
  }
}

И есть подклассOuter в другой упаковке:

public class SubOuterInAnotherPackage extends Outer {
  public static void main(String[] args) {
    SubOuterInAnotherPackage.ProtectedInner protectedInner 
      = new SubOuterInAnotherPackage().new ProtectedInner(); // Error!! Can't access the default constructor
  }
}

Вы получите ошибку вmain() метод, но если вы добавите открытый конструкторProtectedInner класс, эта ошибка решена. Вот почему я думаю, что модификатор конструктора по умолчанию не является публичным! Так может кто-нибудь сказать мне, что модификатор доступа конструктора по умолчанию?

Ответы на вопрос(3)

Ваш ответ на вопрос