2013-01-06 34 views
0

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

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

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

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html –

+0

如果您了解访问修饰符的含义,这里没有任何问题,如果您不需要查看它们在JLS中。不是一个真正的问题。 – EJP

回答

6

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

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

private - 无法从类外部构造 - 通常用于控制谁可以使用静态成员工厂方法实例化类。一个器件的应用的一个很好的例子发现here

protected - 像private但现在继承参与 - 任何子类工厂方法可以使用,因为现在他们可以调用此构造。

由于@dasblinkenlight提到,如果你不指定任何修改,那么他们默认到被package-private,这意味着他们只对包内的类可见。

+0

为了完整起见,您可能想提及具有其默认访问权限的'A(){}',以供同一包中的成员使用。 – dasblinkenlight

相关问题