zoukankan      html  css  js  c++  java
  • 面向对象基础——静态成员、静态类

    1. 静态方法 VS 实例方法

      

    2. 静态类

      (1)常见的静态类:Math、Console、Convert

      (2)静态类中只能包括静态成员、静态构造函数、常量成员,不能有实例成员,不能有普通构造函数

      (3)静态构造函数不能有参数、不能有访问修饰符(默认为private)

        静态构造函数的作用:用来初始化静态成员

        在加载类的时候使用,只会执行一次

    3. 使用建议

      当多个对象共享同一个数据的时候就可以在实例类中加入静态成员。

      少使用静态类,静态类、静态成员所分配的内存在程序退出时才会释放

      在项目中需要频繁用到的一些工具类,例如:Math、Console、Convert 等。或者模拟“全局变量”的时候使用。

    4. 静态类的继承问题

      a)静态类不能被其他类继承

      b)如果在程序中我们让静态类继承其他类,编译器会报错:“静态类必须从对象派生”。

       这句话我们应该这样翻译比较恰当:静态类只能从Object类中派生

       所以,静态类只能继承Object类。

      c)静态类不能实现任何接口,因为接口中的成员都是实例成员。

     d)sealed:(*)密封类,不能被继承。

     

    1.sealed关键字,表示类不能被继承。(密封类)

     

    2.密封类表示不能被继承。String类。

     

     e)静态类的本质abstract+sealed(*,知道即可)static

     

    1.静态类不能被实例化:abstract

     

    2.静态类不能被继承:sealed

        class Program
        {
            static void Main(string[] args)
            {
                MyHelper.name = "lk";
                MyHelper.ShowMyMsg();
    
                MyClass.Say();
            }
        }
    
        public static class MyHelper : Object 
        {
            //报错,不能声明实例成员
            //public int num;
            //public void ShowMsg() { Console.WriteLine("msg"); }
    
            //只能声明静态成员
            public static string name;
            public static void ShowMyMsg() { Console.WriteLine("MyMsg"); }
    
            private static void Show() { }
            
            //可以声明常量
            public const int MAX = 100;
    
            static MyHelper() 
            {
                name = "123456789";
            }
        }
  • 相关阅读:
    bloom filter
    Crowdsourcing(众包)
    瘦客户端
    如何书写高效的工作邮件:给你十条建议
    JSON
    MATLAB实现频数直方图——hist的使用
    Matlab中给figure添加图例(legend),标题(title)和颜色(color)
    数字信号处理中各种频率关系
    论文的写作要求、流程与写作技巧
    中继器、集线器(HUB)、网桥、交换机、路由器比较
  • 原文地址:https://www.cnblogs.com/lcxBlog/p/4500729.html
Copyright © 2011-2022 走看看