静态类,静态方法,静态变量与非静态之前的区别

时间:2022-05-09 19:32:02

静态类:

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中应该多使用局部变量少用全局变量一样。

将需要同时也被静态方法调用的变量设为静态的,那么静态方法和实例方法都能访问.