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

San*_*eep 0 java constructor

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

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

    protected A()
    {
         //some code....
    }
}
Run Code Online (Sandbox Code Playgroud)

Kar*_*k T 6

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

public - 任何人都可以从代码中的任何地方调用构造函数.

private - 无法从类外部构造 - 通常用于通过使用静态成员工厂方法来控制谁使用instanciate类.发现了一个器件的应用的一个很好的例子在这里

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

正如@dasblinkenlight所提到的,如果你没有指定任何修饰符,那么它们默认为包私有,这意味着它们只对包中的类可见.