php靜態方法與非靜態方法用法區別詳解

2021-10-05 18:47:45 字數 624 閱讀 5002

靜態方法和非靜態方法的區別總結如下:

1、靜態方法屬於類所有,類例項化前即可使用。也就是不需要new乙個物件就可以使用該物件的方法。比如object::fun1()這樣的格式;

2、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員;

3、因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體;

4、static內部只能出現static變數和其他static方法(即靜態方法不能呼叫非靜態屬性 。也不能使用self::呼叫非靜態屬性)!而且static方法中還不能使用this等關鍵字,因為它是屬於整個類。靜態方法內部呼叫其他靜態方法,可以使用self::方法名稱的形式來實現;

5、靜態方法效率上要比例項化高,靜態方法的缺點是不自動進行銷毀,而例項化的則可以做銷毀;

6、靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體。

主要區別:

靜態方法在建立物件前就可以使用了,非靜態方法必須通過new出來的物件呼叫。

靜態方法與例項方法在效能和占用記憶體上沒有明顯的區別,是否宣告為靜態方法需要從型別的非靜態字段、事件、物件導向擴充套件和多型這三方面來考慮。

總結:靜態的是不論例項化多少次結果最終只有乙個,而動態的每次結果都不一樣。

靜態方法與非靜態方法

靜態類 在類 class 上加入static修飾,表示該類無法被例項化,並且該類中,無法例項化變數或函式。那麼如果要在此靜態類中新增函式 變數 屬性,則必須都是靜態的。靜態類的主要特性 1 僅包含靜態成員。2 無法例項化。3 靜態類的本質,是乙個抽象的密封類,所以不能被繼承,也不能被例項化。4 不能...

靜態方法與非靜態方法

c 的類中可以包含兩種方法 c 靜態方法與非靜態方法。讓我們來看看最直觀的差別 使用了static 修飾符的方法為靜態方法,反之則是非靜態方法。下面我們分四個方面來看看c 靜態方法與非靜態方法的差異 c 靜態方法與非靜態方法比較一 c 靜態成員 靜態成員屬於類所有,非靜態成員屬於類的例項所有。每建立...

靜態方法與非靜態方法區別

c 靜態方法與非靜態方法的區別不僅僅是概念上的,那麼他們有什麼具體的區別呢?讓我們通過本文向你做一下解析。c 的類中可以包含兩種方法 c 靜態方法與非靜態方法。那麼他們的定義有什麼不同呢?他們在使用上會有什麼不同呢?讓我們來看看最直觀的差別 使用了static 修飾符的方法為靜態方法,反之則是非靜態...