构造函数并不一定都是public的,以下的代码是不是另拟感到构造函数的奇特阿?
1
public
class
Class1
//
永远无法被实例化的类
2 {
3 //这个类没有可以被外部访问的构造函数
4 private Class1()
5 {
6 }
7 }
8
9 public class Class2 // 只可以在本程序内实例化的类
10 {
11 internal Class2()
12 {
13 }
14 }
15
16 public class Class3 // 只可以通过自身实例化的类
17 {
18 private Class3()
19 {
20 }
21 //private的构造函数可以被自身的方法调用,所以可以用Class3.CreateClass3()来创建实例
22 public static Class3 CreateClass3()
23 {
24 return new Class3();
25 }
26 }
27
28 public class Class4
29 {
30 //Class4不能被实例化,但又要求子类在继承时构造有参
31 protected Class4(int i)
32 { }
33
34 }
35
36 public class Class4Sub : Class4
37 {
38
39 public Class4Sub(int i)
40 : base(i)
41 {
42
43 }
44 }
45
46 public class Class5 // 要求子类必须显示调用父类构造函数的
47 {
48 public Class5(int i)
49 { }
50 }
51
52 public class Class5Sub : Class5
53 {
54 public Class5Sub()
55 : base(0)
56 { }
57 public Class5Sub(int i)
58 : base(i)
59 { }
60 }
2 {
3 //这个类没有可以被外部访问的构造函数
4 private Class1()
5 {
6 }
7 }
8
9 public class Class2 // 只可以在本程序内实例化的类
10 {
11 internal Class2()
12 {
13 }
14 }
15
16 public class Class3 // 只可以通过自身实例化的类
17 {
18 private Class3()
19 {
20 }
21 //private的构造函数可以被自身的方法调用,所以可以用Class3.CreateClass3()来创建实例
22 public static Class3 CreateClass3()
23 {
24 return new Class3();
25 }
26 }
27
28 public class Class4
29 {
30 //Class4不能被实例化,但又要求子类在继承时构造有参
31 protected Class4(int i)
32 { }
33
34 }
35
36 public class Class4Sub : Class4
37 {
38
39 public Class4Sub(int i)
40 : base(i)
41 {
42
43 }
44 }
45
46 public class Class5 // 要求子类必须显示调用父类构造函数的
47 {
48 public Class5(int i)
49 { }
50 }
51
52 public class Class5Sub : Class5
53 {
54 public Class5Sub()
55 : base(0)
56 { }
57 public Class5Sub(int i)
58 : base(i)
59 { }
60 }
本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806285