码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-13 19:15:59      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

标签:

原文地址:http://www.cnblogs.com/lcxBlog/p/4500729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!