[再读书]私有构造函数
记录下来,给新手看(应该有人用的到)。
私有构造函数初看起来没有什么作用,但是在.net中功能相当多。一般用在许多静态方法的类中,这些静态方法用作一个库,而不是对象。添加私有构造函数,将确保类不能在外部创建对象。
创建私有构造函数有两个原因,在使用公共构造函数时,不能使用类创建代码,一种情况是,如果不提供初始化参数,创建对象是没有意义的。
第二个原因是创建某种对象设计模式,例如工厂模式,即类上的公共静态方法要调用私有构造函数,并把对象的一个实例返回到对象创建代码,还有单—模式,即构造函数只能调用一次。
一个小例子:
class foo
{
private foo()
{ }
public foo(int intNum)
{
}
}
如果在外部创建对象{
private foo()
{ }
public foo(int intNum)
{
}
}
foo f = new foo();
就会报一个错误 1 “foo()”不可访问,因为它受保护级别限制 ,这种情况是我们认为,如果不初始化参数,创建对象就没有意义。此时如果想创建对象,就需要。
foo f = new foo(321);
应该知道,派生类都要调用基类的构造函数,所以,就决定了带有私有构造函数的类不能用作基类,因为他们的构造函数对派生类来说不可见。