默认情况下,Java构造函数不公开吗?

我在两个不同的包中有两个类。 对于一个类,我已经定义了一个构造函数而没有为它设置访问修饰符。 我想在另一个包中实例化该类的对象,并获得错误’ the constructor xxx() is not visible ‘。

如果我将访问权限定义为public修改,则可以。 我认为构造函数默认是公开的?

没有访问说明符!= public

没有Modifier是包私有的。 检查文档

不,他们不是。 默认情况下,它们具有包可见性。

默认情况下,访问是(错误…) 默认访问 。 也称为包私有 。 考虑一下:如果默认情况下它们是public的,那么你如何表明构造函数不是public但事实上它是包私有的? 没有与包private相对应的关键字来指示它。

当您不写入访问修饰符时,它将设置为默认值,这意味着包私有。 例如,包外没有类可以访问它。

不,他们有默认的访问说明符。 即他们有包装可见性。

您可以在构造函数的声明中使用访问修饰符来控制哪些其他类可以调用构造函数。 如果未将构造函数显式声明为public,则它仅在声明它的同一包中可见(包访问)

在类中,没有访问修饰符的所有方法都具有包可见性。 但是,在接口方法中始终具有公共可见性。