面向对象基础——静态成员、静态类

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";
        }
    }

 

posted @ 2015-05-13 16:01  苏打兴  阅读(715)  评论(0编辑  收藏  举报