什么是显式构造函数访问修饰符?

时间:2013-01-06 03:03:45

标签: java constructor

假设有一个类A.以下两个访问修饰符中哪一个是构造函数的默认修饰符?

public A()
{
    private A()
    {
         //some code....
    }

    protected A()
    {
         //some code....
    }
}

1 个答案:

答案 0 :(得分:6)

它与函数和变量的修饰符完全相同,只是现在它指的是谁可以构造该类的实例。

public - 任何人都可以从代码中的任何位置调用构造函数。

private - 无法从类外部构造 - 通常用于通过使用静态成员工厂方法来控制谁使用instanciate类。找到here

的一个很好的应用示例

protected - 与private类似,但现在涉及继承 - 可以使用任何子类工厂方法,因为现在它们可以调用此构造函数。

正如@dasblinkenlight所提到的那样,如果你没有指定任何修饰符,那么它们默认package-private,这意味着它们只对其中的类可见封装