构造函数并不一定都是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
}
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 Class429
{30
//Class4不能被实例化,但又要求子类在继承时构造有参31
protected Class4(int i)32
{ }33

34
}35

36
public class Class4Sub : Class437
{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 : Class553
{54
public Class5Sub()55
: base(0)56
{ }57
public Class5Sub(int i)58
: base(i)59
{ }60
}


浙公网安备 33010602011771号