我们都知道,如果我们没有专门定义一个构造函数,编译器会插入一个不可见的零参数构造函数。我认为它的访问修饰符是公开的,但是在处理内部类问题时,我发现也许我错了。这里是我的代码:
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类中的公共构造函数添加到该问题中,则该问题将被解决。这就是为什么我认为默认构造函数的修饰符不是public!那么任何人都可以告诉我默认构造函数的访问修饰符是什么?