Java中默认构造函数的访问修饰符是什么?
2022-09-01 10:38:17
我们都知道,如果我们没有专门定义构造函数,编译器就会插入一个不可见的零参数构造函数。我以为它的访问修饰符是公开的,但在处理内部类问题时,我发现也许我错了。这是我的代码:
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