zoukankan      html  css  js  c++  java
  • 静态类,静态方法,静态变量与非静态之前的区别

    静态类:

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

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

  • 相关阅读:
    AngularJS特性
    FOR XML PATH 解决联接返回结果集各记录问题
    ASP.NET MVC与WebForm区别
    C#.net 获取当前应用程序所在路径及环境变量
    .net 4.0 运行时中运行.net2.0开发的程序
    混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集
    sort() 方法用于对数组的元素进行排序
    SQL Server 表和索引存储结构
    SQL Server 数据库文件管理
    navicat 导入数据报错 --- 1153
  • 原文地址:https://www.cnblogs.com/PEIYANGXINQU/p/3479237.html
Copyright © 2011-2022 走看看