¿Cuál es el modificador de acceso del constructor predeterminado en java?
Todos sabemos que si no definimos específicamente un constructor, el compilador inserta un constructor invisible de parámetros cero. Pensé que su modificador de acceso era público, pero al tratar con un problema de clase interna, descubrí que tal vez estaba equivocado. Aquí está mi código:
public class Outer {
protected class ProtectedInner {
// adding a public constructor will solve the error in SubOuterInAnotherPackage class
//public ProtectedInner() {}
}
}
Y hay una subclase deOuter
en otro paquete:
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
}
}
Recibirá un error en elmain()
, pero si agrega un constructor público alProtectedInner
clase, ese error está resuelto. ¡Es por eso que estoy pensando que el modificador del constructor predeterminado no es público! Entonces, ¿alguien podría decirme cuál es el modificador de acceso del constructor predeterminado?