构造函数并不一定都是public的,以下的代码是不是另拟感到构造函数的奇特阿?
1
publicclassClass1//永远无法被实例化的类
2

{
3
//这个类没有可以被外部访问的构造函数
4
privateClass1()
5

{
6
}
7
}
8
9
publicclassClass2//只可以在本程序内实例化的类
10

{
11
internalClass2()
12

{
13
}
14
}
15
16
publicclassClass3//只可以通过自身实例化的类
17

{
18
privateClass3()
19

{
20
}
21
//private的构造函数可以被自身的方法调用,所以可以用Class3.CreateClass3()来创建实例
22
publicstaticClass3CreateClass3()
23

{
24
returnnewClass3();
25
}
26
}
27
28
publicclassClass4
29

{
30
//Class4不能被实例化,但又要求子类在继承时构造有参
31
protectedClass4(inti)
32

{}
33
34
}
35
36
publicclassClass4Sub:Class4
37

{
38
39
publicClass4Sub(inti)
40
:base(i)
41

{
42
43
}
44
}
45
46
publicclassClass5//要求子类必须显示调用父类构造函数的
47

{
48
publicClass5(inti)
49

{}
50
}
51
52
publicclassClass5Sub:Class5
53

{
54
publicClass5Sub()
55
:base(0)
56

{}
57
publicClass5Sub(inti)
58
:base(i)
59

{}
60
}
publicclassClass1//永远无法被实例化的类2


{3
//这个类没有可以被外部访问的构造函数4
privateClass1()5


{6
}7
}8

9
publicclassClass2//只可以在本程序内实例化的类10


{11
internalClass2()12


{13
}14
}15

16
publicclassClass3//只可以通过自身实例化的类17


{18
privateClass3()19


{20
}21
//private的构造函数可以被自身的方法调用,所以可以用Class3.CreateClass3()来创建实例22
publicstaticClass3CreateClass3()23


{24
returnnewClass3();25
}26
}27

28
publicclassClass429


{30
//Class4不能被实例化,但又要求子类在继承时构造有参31
protectedClass4(inti)32


{}33

34
}35

36
publicclassClass4Sub:Class437


{38

39
publicClass4Sub(inti)40
:base(i)41


{42

43
}44
}45

46
publicclassClass5//要求子类必须显示调用父类构造函数的47


{48
publicClass5(inti)49


{}50
}51

52
publicclassClass5Sub:Class553


{54
publicClass5Sub()55
:base(0)56


{}57
publicClass5Sub(inti)58
:base(i)59


{}60
}
本文探讨了不同访问级别的构造函数在C#中的使用方式,包括仅允许内部实例化、仅通过特定方法实例化及要求子类必须调用基类构造函数等场景。
1333

被折叠的 条评论
为什么被折叠?



