• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學(xué)習(xí)啦>知識(shí)大全>知識(shí)百科>百科知識(shí)>

    什么是靜態(tài)方法靜態(tài)方法的弊端

    時(shí)間: 謝君787 分享

      若類的方法前加了static關(guān)鍵字,則該方法稱為靜態(tài)方法,那么你對(duì)靜態(tài)方法了解多少呢?以下是由學(xué)習(xí)啦小編整理關(guān)于什么是靜態(tài)方法的內(nèi)容,希望大家喜歡!

      靜態(tài)方法的介紹

      靜態(tài)方法為類所有,可以通過(guò)對(duì)象來(lái)使用,也可以通過(guò)類來(lái)使用。但一般提倡通過(guò)類名來(lái)使用,因?yàn)殪o態(tài)方法只要定義了類,不必建立類的實(shí)例就可使用。靜態(tài)方法只能用類的靜態(tài)成員。

      靜態(tài)方法的方法使用

      靜態(tài)方法與靜態(tài)變量一樣,屬于類本身,而不屬于那個(gè)類的一個(gè)對(duì)象。調(diào)用一個(gè)被定義為static的方法,可以通過(guò)在它前面加上這個(gè)類的名稱,也可以像調(diào)用非靜態(tài)方法一樣通過(guò)類對(duì)象調(diào)用。

      實(shí)例方法必須通過(guò)類的實(shí)例來(lái)使用。實(shí)例方法可以使用類的非靜態(tài)成員,也可以使用類的靜態(tài)成員。

      類的靜態(tài)方法,靜態(tài)變量是在類裝載的時(shí)候裝載的。但是要特別注意,類的靜態(tài)變量是該類的對(duì)象所共有的,即是所有對(duì)象共享變量。所以建議盡量少用靜態(tài)變量。盡量在靜態(tài)方法中使用內(nèi)部變量。

      方法聲明

      其中static關(guān)鍵字即表示靜態(tài)的。聲明靜態(tài)方法的語(yǔ)法如下:

      <訪問(wèn)修飾符>static返回類型 方法名(參數(shù)列表)

      {//方法體}

      方法調(diào)用

      靜態(tài)方法與實(shí)例方法唯一不同的,就是靜態(tài)方法在返回類型前加static關(guān)鍵字。靜態(tài)方法的調(diào)用有兩種途徑:

      (1)通過(guò)類的實(shí)例對(duì)象去調(diào)用

      調(diào)用格式為: 對(duì)象名.方法名

      (2) 通過(guò)類名直接調(diào)用

      調(diào)用格式為: 類名::方法名

      方法規(guī)則

      我們?cè)谑褂脮r(shí)要注意:

      靜態(tài)方法只能訪問(wèn)類的靜態(tài)成員,不能訪問(wèn)類的非靜態(tài)成員;

      非靜態(tài)方法可以訪問(wèn)類的靜態(tài)成員,也可以訪問(wèn)類的非靜態(tài)成員;

      靜態(tài)方法既可以用實(shí)例來(lái)調(diào)用,也可以用類名來(lái)調(diào)用。

      代碼示例

      #include<iostream>

      using namespace std;

      class CStaticTest{

      public:

      CStaticTest(int a)

      {

      this->a = a;

      }

      ~CStaticTest(){}

      static int add(CStaticTest& c1, CStaticTest& c2)

      {

      return c1.a + c2.a;

      }

      private:

      int a;

      };

      int main()

      {

      CStaticTest tmp1(1);

      CStaticTest tmp2(2);

      int sum1 = tmp1.add(tmp1, tmp2);

      int sum2 = CStaticTest::add(tmp1, tmp2);

      cout << sum1 << endl;

      cout << sum2 << endl;

      return 0;

      }

      實(shí)際應(yīng)用

      1. 有靜態(tài)屬性的類,一般會(huì)定義靜態(tài)方法。

      2. 沒有屬性的類,一般會(huì)定義靜態(tài)方法,這樣在使用時(shí),通過(guò)類名::方法名即可調(diào)用,

      而不用先定義對(duì)象,再調(diào)用,這樣可以省去一行代碼。

      靜態(tài)方法的經(jīng)典案例

      (1)用于對(duì)靜態(tài)字段、只讀字段等的初始化。

      (2)添加static關(guān)鍵字,不能添加訪問(wèn)修飾符,因?yàn)殪o態(tài)構(gòu)造函數(shù)都是私有的。

      (3)類的靜態(tài)構(gòu)造函數(shù)在給定應(yīng)用程序域中至多執(zhí)行一次:只有創(chuàng)建類的實(shí)例或者引用類的任何靜態(tài)成員才激發(fā)靜態(tài)構(gòu)造函數(shù)

      (4)靜態(tài)構(gòu)造函數(shù)是不可繼承的,而且不能被直接調(diào)用。

      (5)如果類中包含用來(lái)開始執(zhí)行的 Main 方法,則該類的靜態(tài)構(gòu)造函數(shù)將在調(diào)用 Main方法之前執(zhí)行。任何帶有初始值設(shè)定項(xiàng)的靜態(tài)字段,則在執(zhí)行該類的靜態(tài)構(gòu)造函數(shù)時(shí),先要按照文本順序執(zhí)行那些初始值設(shè)定項(xiàng)。

      (6)如果沒有編寫靜態(tài)構(gòu)造函數(shù),而這時(shí)類中包含帶有初始值設(shè)定的靜態(tài)字段,那么編譯器會(huì)自動(dòng)生成默認(rèn)的靜態(tài)構(gòu)造函數(shù)。

      以下用例子代碼進(jìn)一步說(shuō)明:

      using System;

      class A { public static int X; static A()

      ④ 執(zhí)行完后返回到③ { X = B.Y + 1; Console.WriteLine("static A()"); } }class B { public static int Y = A.X + 1③ 調(diào)用了A的靜態(tài)成員, 轉(zhuǎn)到A的靜態(tài)構(gòu)造函數(shù)----> static B()

      ② 如果帶有初始值設(shè)定項(xiàng)的靜態(tài)字段,執(zhí)行該類的靜態(tài)構(gòu)造函數(shù)時(shí),

      先要按照文本順序執(zhí)行那些初始值設(shè)定項(xiàng)。

      轉(zhuǎn)到初始值設(shè)定項(xiàng)----> { Console.WriteLine("staticB()"); } static void Main()

      ① 程序入口,

      如果類中包含用來(lái)開始執(zhí)行的 Main 方法,

      該類的靜態(tài)構(gòu)造函數(shù)將在調(diào)用 Main 方法之前執(zhí)行。

      轉(zhuǎn)到B的靜態(tài)構(gòu)造函數(shù)----> { Console.WriteLine("X = {0},Y = {1}", A.X, B.Y);

      ⑤ 輸出結(jié)果 Console.ReadLine(); } }

      靜態(tài)方法的弊端

      在一些系統(tǒng)中使用非常頻繁的方法都使用靜態(tài)方法可以提高系統(tǒng)性能

      本身不可升級(jí),重寫,這要看一個(gè)軟件產(chǎn)品的目的是什么了.

      為了方便,不用實(shí)例化,但這樣程序編譯運(yùn)行時(shí)就占用了系統(tǒng)資源

      靜態(tài)的屬性和方法在程序啟動(dòng)的時(shí)候,就全部裝入內(nèi)存的,而不管這些方法、屬性以后有沒有用到。即使是沒有人再訪問(wèn)程序,這部分內(nèi)存仍然不會(huì)釋放還有就是,所有訪問(wèn)者看到的靜態(tài)屬性的數(shù)據(jù)幾乎都是一樣的,比如A用戶設(shè)置了UserName這個(gè)屬性,B用戶訪問(wèn)的時(shí)候,得到的UserName仍然是A用戶設(shè)置的那個(gè)。這種特性,如果用在固定數(shù)據(jù)中,那不會(huì)有太大問(wèn)題,比如連接字符串之類的
    看過(guò)“靜態(tài)方法的弊端”的人還看了:

    1.Java中靜態(tài)方法和實(shí)例方法的區(qū)別

    2.路由器靜態(tài)怎么設(shè)置

    3.如何使用網(wǎng)絡(luò)中靜態(tài)IP地址

    4.局域網(wǎng)靜態(tài)ip設(shè)置方法

    5.Java中static 和final的區(qū)別

    6.路由器靜態(tài)ip怎么樣設(shè)置

    7.設(shè)置路由器靜態(tài)ip怎么填

    1651514 主站蜘蛛池模板: 日韩精品在线电影| 青青青国产依人精品视频| 朝鲜女人性猛交| 国产亚洲精品成人久久网站| 久久91精品国产99久久yfo| 美女被羞羞在线观看漫画| 女人把腿给男人桶视频app| 亚洲精品亚洲人成在线观看| www.九色视频| 日本漫画之无翼彩漫大全| 午夜精品不卡电影在线观看| 99久久人妻无码精品系列| 欧美人与zoxxxx另类| 国产亚洲欧美日韩在线观看不卡| 一级毛片免费播放男男| 污污的网站免费在线观看| 国产欧美久久一区二区三区| 中文字幕影片免费在线观看| 狠狠97人人婷婷五月| 国产欧美视频一区二区三区| 丰满人妻熟妇乱又仑精品| 浪荡秘书伺候办公室h| 国产成人精品一区二区三在线观看| 中文字幕精品无码一区二区三区| 狠狠久久精品中文字幕无码| 国产精品多p对白交换绿帽| 久久久久高潮毛片免费全部播放| 男女猛烈激情XX00免费视频| 国产精品久久久久乳精品爆| 久久九九久精品国产| 特黄特黄aaaa级毛片免费看| 国产欧美第一页| 一区二区三区日韩| 欧美黑人bbbbbbbbb| 国产片91人成在线观看| 两个人的视频www免费| 欧美精品九九99久久在免费线| 国产午夜福利100集发布| sihu国产精品永久免费| 最近中文字幕精彩视频| 动漫美女www网站免费看动漫|