文章出處

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

 


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()