對于初學(xué)者來說,.NET 的靜態(tài)和非靜態(tài)一直比較難掌握,這里做一個總結(jié),介紹靜態(tài)類和普通類,靜態(tài)方法和實例方法,靜態(tài)構(gòu)造函數(shù)和實例構(gòu)造函數(shù),靜態(tài)字段和非靜態(tài)字段的區(qū)別。
靜態(tài)類 vs 普通類 靜態(tài)類與普通類的區(qū)別有以下幾點: 1)靜態(tài)類無法實例化而普通類可以; 2)靜態(tài)類只能從System.Object基類繼承;普通可以繼承其它任何非static和非sealed類,但也只能繼承一個類; 3)靜態(tài)類不能繼承接口;普通類可以繼承多個接口; 4)靜態(tài)類只能包含靜態(tài)成員;普通類可以包含靜態(tài)和非靜態(tài)成員; 5)靜態(tài)類不能作為字段,方法參數(shù)和局部變量使用;普通類可以; 靜態(tài)類的意義: 可以用靜態(tài)類封裝一組不與任何對象相關(guān)聯(lián)的方法,如Math類,Console類。靜態(tài)構(gòu)造函數(shù) vs 實例構(gòu)造函數(shù) 靜態(tài)構(gòu)造函數(shù)與實例構(gòu)造函數(shù)的區(qū)別有以下幾點: 1)靜態(tài)構(gòu)造函數(shù)屬于類,在第一次用到該類時執(zhí)行且只執(zhí)行一次;實例構(gòu)造函數(shù)屬于對象,在每次初始化一個新對象的時候都會執(zhí)行; 2)靜態(tài)構(gòu)造函數(shù)只能定義一次,且不能包含參數(shù);實例構(gòu)造函數(shù)可以定義重載,且可以包含參數(shù); 3)靜態(tài)構(gòu)造函數(shù)只能訪問類型的靜態(tài)字段;實例構(gòu)造函數(shù)可以訪問類型的靜態(tài)和非靜態(tài)字段; 4)靜態(tài)類不能包含訪問修飾符,默認(rèn)為PRivate. 靜態(tài)構(gòu)造函數(shù)的意義: 設(shè)置類型的初始化,例如初始化類型需要的實例對象,為類型的靜態(tài)字段賦值等。靜態(tài)方法 vs 實例方法 靜態(tài)方法與實例方法的區(qū)別有以下幾點: 1)靜態(tài)方法屬于類,通過類來調(diào)用;實例方法屬于對象,通過對象來調(diào)用; 2)靜態(tài)方法不能訪問類的非靜態(tài)成員; 靜態(tài)方法的意義: 完成一個與特定對象無關(guān)的功能。靜態(tài)字段 vs 非靜態(tài)字段 靜態(tài)字段與非靜態(tài)字段的區(qū)別: 靜態(tài)字段屬于類,通過類來調(diào)用;非靜態(tài)字段屬于對象,通過對象來調(diào)用。 靜態(tài)字段的意義: 可以用靜態(tài)字段來記錄一些屬于類本身的信息。
via 51cto
新聞熱點
疑難解答