【发布时间】:2019-04-03 11:35:10
【问题描述】:
我们都知道我们不能创建具有私有构造函数的类的对象。所以问题是这个类可以创建多少个实例。请在下面找到示例代码。
public class Test
{
public int val ;
private Test(int sent)
{
val=val +sent;
}
public static void Callme(int GetVal)
{
Test obj=new Test(GetVal);
Console.WriteLine(obj.val);
}
}
public class Program
{
public static void Main()
{
Test.Callme(10);
//Console.WriteLine(Test.val);
Test.Callme(20);
//Console.WriteLine(Test.val);
}
}
据我所知,它应该创建 2 个类的对象。需要帮助理解这一点。
【问题讨论】:
-
虽然构造函数是私有的,但方法
Callme充当静态工厂(尽管不返回实例)。因此,您可以通过工厂创建任意数量的实例。 -
构造函数的访问修饰符与可以创建多少实例无关。
private这里只表示只有Test的成员才能访问构造函数(并创建实例)。所以是的,在您的示例中创建了两个不同的实例。