2、私有构造函数
私有构造函数是一种特殊的实例构造函数。 它通常用在只包含静态成员的类中。
如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。
public class Test
{ private Test() { Console.WriteLine("I am Test"); } } public class ProgramTest { int j; private ProgramTest() { j = 3; Console.WriteLine("I am ProgramTest 默认构造函数,j={0}", j); } static void Main(string[] args) { Test t = new Test(); ProgramTest pt1 = new ProgramTest(); Console.Read(); } } 结果:这时你会发现编译器会提示你,你无法创建Test的实例 |
若是只在自己类里有私有类呢?
public class ProgramTest
{ int j; private ProgramTest() { j = 3; Console.WriteLine("I am ProgramTest 默认构造函数,j={0}", j); } static void Main(string[] args) { ProgramTest pt1 = new ProgramTest(); Console.Read(); } } 结果:I am ProgranmTest 默认构造函数,j=3 |
注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用private修饰符来清楚地表明该类不能被实例化。
若是一个类中既有实例构造函数又有私有构造函数,那么当实例对象是会怎么执行呢?
public class Test { int i; private Test() { i = 1; Console.WriteLine("I am Test 默认构造函数 i={0}", i); } public Test(int i) { Console.WriteLine("I am Test 有参构造函数 i={0}", i); } } public class ProgramTest { static void Main(string[] args) { Test t = new Test(); //编译器提示:因为该构造函数受其保护级别的限制而不可访问 Console.Read(); |