美文网首页C#
面向对象(十一)-Static

面向对象(十一)-Static

作者: 元宇宙协会 | 来源:发表于2017-11-19 13:09 被阅读38次

Static

  • 简介
    使用static修饰符声明属于类型本身而不是属于特定对象的静态成员。
    static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。

  • 示例
    如果一个类声明为 static,那么这个类只能包含 static 方法:
        static class SomeClass
        {
            public static void DoSomething() { /*...*/ }
            public static void DoSomethingElse() { /*...*/  }
        }

不能通过实例引用静态成员。 然而,可以通过类型名称引用它。

尽管类的实例包含该类所有实例字段的单独副本,但每个静态字段只有一个副本。
不可以使用this来引用静态方法或属性访问器。
如果对类应用static 关键字,则该类的所有成员都必须是静态的。
类和静态类可以有静态构造函数。 静态构造函数在程序开始和类实例化之间的某个时刻调用。


  • 静态构造方法
    静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
 class SimpleClass
    {
        static SimpleClass()
        {
            Console.WriteLine("SimpleClass");
        }
    }

  • 静态构造函数具有以下特点:
静态构造函数既没有访问修饰符,也没有参数。

在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。

无法直接调用静态构造函数。

在程序中,用户无法控制何时执行静态构造函数。

静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。

静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法


  • 示例
    在此示例中,类 Bus有一个静态构造函数和一个静态成员 Drive()。当调用 Drive()时,将调用静态构造函数来初始化类。
public class Bus
    {
        // Static constructor:
        static Bus()
        {
            System.Console.WriteLine("The static constructor invoked.");
        }

        public static void Drive()
        {
            System.Console.WriteLine("The Drive method invoked.");
        }
    }

    class TestBus
    {
        static void Main()
        {
            Bus.Drive();
        }
    }

输出 : 
The static constructor invoked.
The Drive method invoked.

  • 总结
    • 静态类
      1-如果一个类,被声明为静态类,那么该类不可以被实例化,也不可以被继承,同时不可以包含非静态成员。
      2-非静态类中,可以包含静态成员。
    • 静态方法
      1-静态方法中,不可以访问非静态成员。
      2-非静态方法中,可以调用静态和非静态成员。
静态成员的生命周期是:从程序开始到程序结束

  • 文章出处
    作者:silence_k
    链接:http://www.jianshu.com/p/d84ce4d0ab6b
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 面向对象(十一)-Static

    Static 简介使用static修饰符声明属于类型本身而不是属于特定对象的静态成员。static修饰符可用于类、...

  • Static 属性的理解

    C++ 的 static 有两种用法: 面向过程程序设计中的static 和面向对象程序设计中的 static. ...

  • Java 面向对象2

    Java 面向对象 1. static 和 final static关键字---修饰成员变量 用static修饰的...

  • C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通...

  • C++中的Static

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通...

  • 2020-02-29

    JAVA的面向对象 对象的使用方法 class Test { public static void main (S...

  • 13.面向对象进阶—静态关键字static

    面向对象进阶 静态关键字static static关键字的作用,修饰成员变量的用法 static是静态的意思,可以...

  • 面向对象与static详解

    一、万物皆对象 对象:在现实生活中存在具体的一个事物。;类:实际就是对某种类型事物的共性属性与行为的抽取。人类认识...

  • 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点。静态-static关键字,static变量,静态代码块...

  • Java之面向对象(一)

    面向对象的三大特性:继承,多态,封装。 修饰符: static 解析,在一个类中定义的static属性,方法是隶属...

网友评论

    本文标题:面向对象(十一)-Static

    本文链接:https://www.haomeiwen.com/subject/lgwuvxtx.html