面向对象之封装八

静态类和静态构造函数

一.静态类

概念:用static修饰的类

特点:只能包含静态成员,并且不能被实例化

作用:

1.将常用的静态成员写在静态类中,方便使用

2.静态类不能被实例化,(不能被new出来),更能体现工具类的唯一性

3.比如:Console就是一个静态类。

1
2
3
4
5
6
7
8
9
10
11
12
13
static class TestStatic{
public static int testIndex=0;
//静态成员变量
public static void TestFun(){

}
//静态方法
public static Index{
get;
set;
}
//静态自动属性
}

二.静态构造函数

概念:在构造函数加上static修饰

特点:

1.静态类和普通类都可以有

2.不能使用访问修饰符

3.不能有参数

4.只会自动调用一次

作用:在静态构造函数中初始化静态变量

使用:

1.静态类中的静态构造函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static class StaticClass{
public static int testInt=100;
public static int testInt2=100;
static StaticClass(){
Console.WriteLine("静态构造函数");
testInt=200;
testInt2=300;
//静态构造函数其实就是给你初始化使用的
}
}
//主函数模块
Console.WriteLine(StaticClass.testInt);
Console.WriteLine(StaticClass.testInt2);
//结果会输出
/* 静态构造函数
100
100
*/
//也就是说,第一次使用时,会自动调用一次。

2.普通类中的静态构造函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Test{
public static int testInt=200;
static Test(){
Console.WriteLine("静态构造");
}
public Test(){
Console.WriteLine("普通构造");
}
//静态构造和普通构造算是两码事,故不能够算是重载。
}
//主函数模块
Test t=new Test();
Test t2=new Test();
//因为构造函数是直接初始化的,所以会打印出结果
//打印结果如下:
/* 静态构造
普通构造
普通构造
*/
//仍然是第一次使用自动调用。

面向对象之封装八
https://gaster44.github.io/2023/12/22/面向对象之封装八/
作者
huangjinhong
发布于
2023年12月22日
许可协议