什么时候使用静态方法
問(wèn)題:什么時(shí)候使用靜態(tài)方法
I am wondering when to use static methods? Say if I have a class with a few getters and setters, a method or two, and I want those methods only to be invokable on an instance object of the class. Does this mean I should use a static method?
我想知道什么時(shí)候使用靜態(tài)方法?就是說(shuō)我有一個(gè) 帶有一些getter和setter方法的類,我想這些只在一個(gè)類的實(shí)例對(duì)象中使用。那是不是意味著我應(yīng)該用一個(gè)靜態(tài)方法
例如:
Obj x = new Obj(); x.someMethod(); ...or:Obj.someMethod(); // Is this the static way?我現(xiàn)在非常疑惑
回答一
一條經(jīng)驗(yàn)法則,問(wèn)你自己“調(diào)用這個(gè)方法是否有意義的,即使還沒(méi)有對(duì)象被構(gòu)造出來(lái)” 如果是的話,他應(yīng)該被定義為靜態(tài)的。
就像在你一個(gè)汽車類里面,可能有一個(gè)方法
double convertMpgToKpl(double mpg)…which would be static, because one might want to know what 35mpg converts to, even if nobody has ever built a Car. But this method (which sets the efficiency of one particular Car):
這個(gè)方法可以是靜態(tài)的,因?yàn)榧词箾](méi)有建造過(guò)一輛汽車,我們也想知道35mpg 可以轉(zhuǎn)換成多少。
但是下面這個(gè)方法(用來(lái)設(shè)置一輛特定汽車的功率)
void setMileage(double mpg)這個(gè)就不能成為靜態(tài)的了,因?yàn)樵谲囕v沒(méi)有被構(gòu)造之前,不可能調(diào)用這個(gè)方法,
順便說(shuō)一下,這個(gè)轉(zhuǎn)換不一定是對(duì)的,你有時(shí)可能有一個(gè)方法去調(diào)用兩臺(tái)汽車對(duì)象,這時(shí)候就還是靜態(tài)的了,例如:
Car theMoreEfficientOf(Car c1, Car c2)雖然它可以被轉(zhuǎn)換成非靜態(tài)的版本,一些人可能就會(huì)爭(zhēng)論因?yàn)椴淮嬖谝粋€(gè)特權(quán)選擇哪臺(tái)車比較重要,你不能強(qiáng)制選擇一臺(tái)車去調(diào)用這個(gè)方法。但是這種情況只是占所有靜態(tài)方法中一個(gè)很小的部分
文章翻譯自Stack Overflow:https://stackoverflow.com/questions/2671496/when-to-use-static-methods
總結(jié)
以上是生活随笔為你收集整理的什么时候使用静态方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到孩子生孩子好不好
- 下一篇: 重学TCP协议(11)TFO(Tcp F