参考文献:
根据千峰教育---莫新宇授课内容总结
静态类的特点
1.全局唯一,任何一次的修改都是全局性的影响
2.只加载一次,优先于非静态
3.使用方式上不依赖于实例对象。此外,静态类不可以实例化。
4.生命周期属于类级别,从开始访问类时到程序运行结束时。
5.只包含静态成员。
6.不能包含实例构造函数。
静态成员:静态成员变量和类相关联的,可以作为类中“共”有的变量(是一个共性的表现),静态成员不依赖特定对象的存在,访问的时候通过类来操作的。
静态成员使用static关键字修饰。
具有固定属性,不与创建对象有很大关联
class PersonNumber
{ //人口数量
public static long population = 7000000000;
//设置人口数量
public static void SetPopulation(long population) {
PersonNumber.population = population;
}
}
静态成员的特点
静态成员随着类的加载而加载,无论对一个类创建多少个实例,静态成员都只有一个副本
静态方法可以被重载但不能被重写,因为他们是属于类、不属于任何实例的
静态成员由类名通过点语法调用,非静态成员是由对象来调用
静态方法只能访问静态成员,包括静态成员变量和静态方法;实例方法可以访问实例成员变量与实例方法,也可以访问静态成员。
静态成员
成员:字段、属性、方法
静态:跟对象没有任何关系,只跟类有关系
静态成员在何时开辟的内存
第一次访问这个类的时候【第一次用到这个类的时候】
比如:用这个类名去实例化一个对象
比如:用这个类型去访问一个静态字段
静态成员在何时释放内存
在程序结束的时候才会释放
普通的实例成员,每有一个对象,就有一个该成员
而静态成员,跟对象没有关系,所以无论有多少个对象,静态成员都只有一个
例:实例对象name,每有一个人,就会有对应的一个名字
而静态成员population,跟对象没有关系,无论有多少个实例对象,人口数量只有一个
静态方法中是不可以调用非静态的成员的
不能访问非静态的字段
不能调用非静态的方法
静态方法是可以有重载
非静态方法中是可以访问静态成员的
能访问静态的字段、属性
能调用静态的方法
静态成员的特点
静态成员随着类的加载而加载,无论对一个类创建多少个实例,静态成员都只有一个副本
静态方法可以被重载但不能被重写,因为他们是属于类,不属于任何实例的
静态成员由类名通过点语法调用,非静态成员是由对象来调用
静态成员一定是由类名调用的
静态方法只能方法静态成员,包括静态成员变量和静态方法;实例方法可以访问实例成员变量与实例方法,也可以访问静态成员
静态方法中是不可以访问非静态的成员的
不能访问非静态的字段、属性
不能调用非静态的方法
非静态方法中是可以访问静态成员的
能访问静态的字段、塑性
能调用静态的方法
静态方法是可以有重载
静态类
静态的成员可以放在静态类中,也可以放在非静态类中
静态类中只能存在静态成员,不能存在非静态成员
静态类是不能实例化的
静态构造函数
只有一种写法
static 类名()
静态构造函数必须无参数
静态构造函数在什么时候才会调用
静态构造函数在程序运行期间只会执行一次
在第一次访问该类的时候调用
用这个类去new一个对象
用这个类去访问某个静态成员
用这个类去调用某个静态方法
静态构造
静态构造的特性
静态构造函数是固定格式,不能有修饰符,不能带任何参数
一个类只能有一个静态构造函数,即静态构造函数不可以重载
静态构造函数不可被直接调用,当创建类实例或访问任何静态成员时,静态构造函数会被自动调用,并且只执行一次
一个类的静态构造函数在它的所有派生类的静态构造函数执行之后执行
如果有继承关系,静态构造函数的执行顺序是:先执行子类的静态构造,再执行父类的静态构造