静态 可以修饰类 也可以修饰类的成员(属性和方法)
static (静态)
静态是在堆内存中创建一块存储区域,将相同的属性放在同一个区域里
非静态:
注意:
1.非静态的成员属性对象必须通过一个new 出来的对象才能访问
2.非静态的属性对象每个各持一份
静态的属性在所有对象创建之前就在内存中存在了
静态的属性不能通过对象访问 已经 不再属于具体的某个对象而是属于所有的对象,属于类的类名、属性
类名.属性
使用场合:当某个属性不属于某一个对象
静态的方法:
静态的方法不能通过对象调用 基于类来调用
静态方法不能访问非静态方法
而在非静态的是可以访问静态的成员
工具方法适合做静态
静态类不能被实例化
一旦创建了静态类,类中的属性和方法必须是静态的。而没有加静态,则可以写非静态和静态的混合。
设计模式:
单例模式:
只能允许一个控制所有的对象,类似管理员或者导演的角色。
步骤:
1.构造方法私有化
2.提供一个静态的本类的一个字段 属性
3.提供一个公开的静态方法返回创建对象(在方法里通过一定的逻辑来控制)
例子:
public class Class2
{
private static Class2 dx; //创建一个私有化单例引用
public static Class2 ff() //创建一个公开的方法 并且在堆内存中建立一块静态的存储区域。
{
if (dx == null)
{
dx = new Class2(); // 创建一个新的dx引用。
}
return dx; //并返回一个dx引用,返回的引用指向同一个堆中的地址,原有的引用销毁。
}
public List<int> list { get; set; }
private Class2()
{ //在class2创建出来的时候初始化一个list 泛型集合并且指向这个类的集合
list = new List<int>();
}
}
}
注:
通过单例模式设计的对象无论怎么创建都是一个对象,且都只访问这个对象的值。