静态类:
1:仅包含静态变量和静态方法。
2:无法实例化。
3:不能包含实例构造函数。4:是密封的。
非静态类:
1.可以包含非静态成员,也可以包含静态成员。
2.每次实例化都是一个新的对象。
3.可以不显示实例化,因为内部有一个默认的静态构造函数,不可重载,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。
4.也可以通过 类名.方法名或变量名 访问静态成员
静态方法:
1.静态方法不能引用非静态变量
4:静态方法只能被重载,而不能被重写,因为静态方法不属于类的实例成员;当然也不能是Virtual和abstract类型的
非静态方法:
1.可以同时引用 非静态变量和静态变量
静态变量
1.只有一个副本,实例化类,不会初始化静态变量的值。属于类所有,生命周期和网站运用程序一样长
2.C# 不支持静态局部变量(在方法内部定义静态变量)。
非静态变量
1.每次实例化都是一个新的变量。自然要初始化值
静态构造函数
1:静态类可以有静态构造函数,静态构造函数不可继承;
2:静态构造函数可以用于静态类,也可用于非静态类;
3:静态构造函数无访问修饰符、无参数,只有一个 static 标志;
4:静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且
只执行一次。
问题:
1.静态类可以实例化吗?静态类可以有非静态方法和变量吗?静态类的方法和变量怎么调用?
A:静态类不能实例化;不能有非静态方法和变量;对象名.方法名或变量名调用。
2.非静态类可以包含静态变量和方法吗?怎么调用?
A:非静态类可以包含静态变量和方法;类名.方法名或变量名调用
3.静态方法可以引用非静态变量吗?
4.实例类中的静态变量和非静态变量有什么区别?
A:静态变量只有一个副本,实例变量每实例化话一次都是一个新的变量,变量值都会初始化。 而静态变量变量的生存周期和网站运用程序生命周期长度一样。值会累加。
使用推荐:
当定义的类不需要进行实例化时,我们使用静态类;如果需要实例化对象,需要继承等特性时,应该使用非静态类。
尽量用实例变量,少用静态变量。因为实例变量随着对象的销毁而销毁。静态变量整个运用程序销毁才销毁。就像js中应该多使用局部变量少用全局变量一样。
将需要同时也被静态方法调用的变量设为静态的,那么静态方法和实例方法都能访问.