Was ist der Zugriffsmodifikator des Standardkonstruktors in Java?
Wir alle wissen, dass der Compiler einen unsichtbaren Nullparameter-Konstruktor einfügt, wenn wir keinen speziellen Konstruktor definieren. Ich dachte, sein Zugriffsmodifikator sei öffentlich, aber als ich mich mit einem Problem der inneren Klasse befasste, stellte ich fest, dass ich mich vielleicht geirrt hatte. Hier ist mein Code:
public class Outer {
protected class ProtectedInner {
// adding a public constructor will solve the error in SubOuterInAnotherPackage class
//public ProtectedInner() {}
}
}
Und es gibt eine Unterklasse vonOuter
in einem anderen Paket:
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
}
}
Sie erhalten eine Fehlermeldung immain()
Methode, aber wenn Sie einen öffentlichen Konstruktor zumProtectedInner
Klasse, dieser Fehler ist behoben. Deshalb denke ich, dass der Modifikator des Standardkonstruktors nicht öffentlich ist! Könnte mir jemand sagen, was der Zugriffsmodifikator des Standardkonstruktors ist?