1. 程式人生 > >什麼時候要用靜態方法

什麼時候要用靜態方法

靜態方法何時使用
如果某些操作不依賴具體例項,那它就是靜態的,反之如果某些操作是依賴具體例項的(例如訪問一個特定會員的名稱),那它就應該是例項化的。
靜態方法不用new物件可以直接呼叫
1.與類相關與物件無關
2.不需要物件的“輕”方法
3.工廠方法
如果某個方法是用頻率較高,或者方法本身通用性較強,無需初始化類成員變數,則可以使用靜態方法,那樣方便,速度也快.
可以直接拿來就用的方法,就算是靜態的.
肯定不涉及具體物件,因為靜態方法內,是無法直接使用任何非靜態成員的。
(1)製作工具類
(2)可以當作"作局"物件或方法來使用
靜態方法和例項方法是一樣的,在型別第一次被使用時載入。呼叫的速度基本上沒有差別。
靜態方法不用建立例項就可呼叫,比較簡單從面向物件的角度上來說,在抉擇使用例項化方法或靜態方法時,應該根據是否該方法和例項化物件具有邏輯上的相關性,如果是就應該使用例項化物件 反之使用靜態方法
不需要生成物件的
經常頻繁使用的
工具類裡的(如SqlHelper)
適當地使用static方法本身並沒有什麼,當一個人從來不懂使用多型、介面設計時,很自然地會濫用static方法。
個人理解在多個類中需要呼叫並且是與物件無關的方法可設為靜態方法,方便呼叫。
所有物件共有的方法
再不關係到任何於特定物件相關的操作
比如學生的年齡就是學生的相關。
修改學生的年齡就不適合用靜態方法。
一般來說,如果你的方法裡沒有用到this關鍵字,
那就適合用靜態方法
通常通用的類中一些常用的方法可以設計為靜態類
只要是沒有用到類的狀態資訊,只從引數獲取資訊的都可以為靜態的
可以實現某些特殊的設計模式:如Singleton
由於沒有this指標,可以把某些系統API的回撥函式以靜態函式的形式封裝到類的內部
可以封裝某些演算法,比如數學函式,如ln,sin,tan等等,這些函式本就沒必要屬於任何一個物件,所以從類上呼叫感覺更好
總之,從OOA/OOD的角度考慮,一切不需要例項化就可以有確定行為方式的函式都應該設計成靜態的
靜態方法與非靜態方法最明顯的區別就是如果某個方法是公共靜態的,那麼可以直接通過類名.方法名的方法來呼叫,而公共例項方法則需要事先例項化物件,然後才能呼叫。
  這些各種說法,基本上都是正確的。