静态——字段与属性、方法与类、单例设计模式
1、static关键字
static关键字,用于修饰类,字段,属性,方法,构造方法等。
被static修饰的类称之为“静态类”;
被static修饰的成员称之为“静态成员”;
被修饰过的成员分别称为:静态字段,静态属性,静态方法,静态构造方法。
2、静态字段
被static关键字修饰的字段,叫做“静态字段”。
静态字段不属于任何对象,只属于类,必须要用 类名.静态字段名 进行访问,
反过来通过 对象名.静态字段名 的方式是访问不到静态字段的。
静态字段是可以重新赋值的,类名.静志字段名=新的值;
静态字段存储的数据在内存中只有一份;
实例(对象)字段在内存中会有N份,有多少对象就会有多少实例字段;
3、静态属性
被static关键字修饰的属性,叫做“静态属性”。
静态属性用于对静态字段进行封装,并保证静态字段值的合法性;
静态属性使用类名.静态属性名进行访问;
静态属性不能用于封装非静态字段,因为静态的类成员是先于非静态的类成员存在的。在还没有对象之前,静态类成员就已经存在了。
4、静态方法
普通静态方法:
被static修饰的方法,叫做静态方法。
直接使用类名静态方法名进行访问
注意事项:
控制台程序的Program入口类中的Main函数就是一个静态方法 ;
在静态方法中不能调用非静态方法。
public void P1 { P2();//没有问题,可以访问到 Console.WriteLine("我是静态方法"); } public void P1 { P1();//出错,不能访问非静态的成员 Console.WriteLine("我是静态方法"); }
静态的构造方法:
静态构造方法的作用是用于初始化静态成员。
一个类只能有一个静态构造方法,该静专方法没有任何访问修饰符,也没有参数。
可以定义在静态类中,也可以定义在非静态类中。
注意事项:
静态构造方法会在程序创建第一个实例, 或者引用任何静态成员之前,完成类中静态成员的初始化。
5、静态类
当类中的成员全部是静态成员的时候,可以把这个类声明为静态类。
声明静态来需要在class关键字前加静态关键字static。
注意事项
静态类中不能存在非静态(实例)成员;
静态类不能实例化对象。
6、单例设计模式
设计模式
在程序开发过程中经常会遇到一些典型的问题,在对这些问题进行处理解决的过程中,慢慢的整理出来了一套系统的解决方案,这套方案称之为“设计模式”。类似于Boss的攻略,通过这些攻略可以很方便的通过这些副本和Boss。
大多数情况下,我们只需要把前人总结好的设计模式学会即可。并不需要自己去研究去创造新的模式。代表性的有《GoF23种设计模式》。
单例设计模式
设计一个类的时候,需要保证整个程序在运行期间只存在一个实例对象。
解决这个问题,我们就需要用到“单例(模式)”。
单例设计模式是用于非静态类中的,在静态类中写单例无意义。
单例代码步骤
<1>声明一个静态且私有的这么一个当前类类型的字段;
private static ClassName instance;
<2>创建私有无参构造方法,保证外部无法实例化这个类;
private ClassName(){}
<3>创建一个静态方法,用于创建此类的唯一对象。
public static ClassName Instance( ){
if (instance == null)
{
instance = new ClassName();
}
return instance;
}