假设有一个类 A。以下两个访问修饰符中哪一个是构造函数的默认访问修饰符?
public A()
{
private A()
{
//some code....
}
protected A()
{
//some code....
}
}
假设有一个类 A。以下两个访问修饰符中哪一个是构造函数的默认访问修饰符?
public A()
{
private A()
{
//some code....
}
protected A()
{
//some code....
}
}
它与函数和变量的修饰符的含义完全相同,只是现在它指的是谁可以构造类的实例。
public
- 任何人都可以从代码中的任何位置调用构造函数。
private
- 无法从类外部构造 - 通常用于控制谁可以使用静态成员工厂方法来实例化类。在这里找到的一个很好的应用示例
protected
- 像private
,但现在涉及继承 - 可以使用任何子类工厂方法,因为现在它们可以调用此构造函数。
正如@dasblinkenlight 提到的,如果您不指定任何修饰符,则它们默认为package-private,这意味着它们仅对包内的类可见。