zoukankan      html  css  js  c++  java
  • 静态构造函数

    写在前面的话

    对于构造函数,我们都很熟悉,用于在实例化类的时候,使用new关键字,new出一个实例来供使用。

    那么对于静态构造函数,充当的是什么角色呢,它和非静态构造函数有什么区别呢?它又有什么好处呢?

    描述

    静态构造函数用于初始化任何静态数据(静态方法里只能引用静态字段,静态构造函数也属于静态方法的一种)。

    静态构造方法在创建第一个实例或引用类的静态变量之前,会自动调用静态构造函数。

    特点:

    1.静态构造函数没有修饰符,也没有参数

    2.静态构造方法无法继承,且无法手动调用

    3.无参数的静态构造函数可以和无参数的非静态函数共存(尽管方法前面相同,但是一个属于类,一个属于实例)

    4.如果类中含有带初始值的静态成员,那么编译器会生成默认的静态构造函数

    典型应用:

    当类使用日志文件时,可以使用这种构造函数,向其中写入日志。

    示例:

        public class Person
        {
            static string name = "张三";
    
            static Person()
            {
                /*
                 * 如果注释下面的话
                   * 则GetName方法返回 张三
                   * 否则返回 李四
                   */   
                 name = "李四";
            }
    
            public string GetName()
            {
                return Person.name;
            }
        }

    我们来新建一个Student类,让它继承自Person类,看看GetName方法会出现得到什么呢?

        public class Student : Person
        {
            
        }
    此时,GetName方法获取的值仍然是 李四。此代码等同于:
        public class Student : Person
        {
            public Student()
                : base()
            {
    
            }
        }
    注意:
    如果有子类继承自带静态构造方法的类时,子类必须有空构造函数,否则会报错。
  • 相关阅读:
    移动端iOS点击闪烁
    盒子布局(标准)
    zepto.js 自定义打包集成其他模块构建流程
    一种移动端position:absolute布局:
    CSS基础:text-overflow:ellipsis溢出文本显示省略号的详细方法_CSS教程
    ie8 下的半透明 background:rgba 与opacity失效 兼容办法
    在webstorm中编译less,以及压缩css
    JS截取字符串substr 和 substring方法的区别
    array数据处理
    git 使用小结
  • 原文地址:https://www.cnblogs.com/oneword/p/2857628.html
Copyright © 2011-2022 走看看