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

时间:2011-01-12 12:43:19

标签: java constructor visibility

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

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

7 个答案:

答案 0 :(得分:25)

无访问说明符!= public

没有修饰符是包私有的。检查doc

答案 1 :(得分:14)

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

答案 2 :(得分:8)

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

答案 3 :(得分:3)

您可以在构造函数的声明中使用访问修饰符来控制哪些其他类可以调用构造函数。 如果您没有将构造函数显式声明为public,则只能在声明它的相同包中看到它(包访问)

答案 4 :(得分:2)

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

答案 5 :(得分:1)

没有。他们有默认的访问说明符。 他们有包装可见度。

答案 6 :(得分:1)

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