Что такое модификатор доступа конструктора по умолчанию в 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
класс, эта ошибка решена. Вот почему я думаю, что модификатор конструктора по умолчанию не является публичным! Так может кто-нибудь сказать мне, что модификатор доступа конструктора по умолчанию?