2010-10-18 104 views
-1
static public void doRestrictionList(HttpServletRequest request, pageBean UTIL) 

我們可以像最後一樣聲明一個方法嗎?爲什麼我們要聲明一個靜態方法

+3

能否請你澄清你的問題?該標題包含* static *,該描述包含引用* final *的未完成句子。你想知道什麼? – 2010-10-18 21:26:39

回答

2

添加到別人那麼說。一個普通的類方法,你將不得不實例化對象如下。

如果你有一個名爲ClassExample與方法類TestMethod的 你必須做到以下幾點來調用它

ClassExample example = new ClassExample(); 
example.testMethod()... 

,如果你有一個靜態方法,你不必擔心實例化對象,所以你可以做一些類似以下內容的使用

ClassExample.testMethod() 
+0

如何使用聲明爲final的方法 – John 2010-10-18 21:39:49

+1

它會阻止任何子類重寫該方法,這可以幫助您的類中的安全性。 – 2010-10-18 21:49:20

+0

與Christian的說法完全相同,但用較小的術語來說,它使得方法不可變 – TheJediCowboy 2010-10-18 22:58:36

3

靜態表示它不需要該類上的任何實例變量正常工作。它可以允許一個更強大的API,你可以打電話給你的方法:

MyClass.doRestrictionsList(req, util); 

如果你沒能靜,你就必須實例化類給它的狀態,然後調用你的方法上實例。

1

我們聲明方法是靜態的,因此可以在不保存基於該類的Object的實例的情況下訪問它們。使用

您的例子我可以打電話給

SurroundingClass.doRestrictionList(...); 

沒有靜態密鑰的話,我需要做這樣的事情,而不必實例所屬的類可以利用這個

SurroundingClass object = new SurroundingClass(); 
object.doRestrictionList(...); 
1

靜態方法很多實用/ convienent滿足您希望避免創建新實例的成本。

1

您的帖子標題和問題不匹配。你在尋找靜態方法和最終方法之間的比較嗎?每個人都描述了靜態方法,讓我爲你描述最終的方法。

你能在Java中有最終的方法嗎?是

將方法聲明爲final意味着它不能被任何實現子類覆蓋。從http://download.oracle.com/javase/tutorial/java/IandI/final.html

你可能要作出一個方法最終 如果有 不應該被改變的實現,這是 到 對象的一致狀態通常

4

靜態方法的關鍵當功能不需要附加到實際的對象時有意義,但邏輯對於附加到類是有意義的。對於依賴於少量參數的工具類型方法,通常情況就是這樣。舉例來說,我更喜歡這樣的:

int sum = Arithmetic.sum(13, 42); 

這樣:

Arithmetic arithmeticObject = new Arithmetic(); 
int sum = arithmeticObject.add(13, 42); 

或本:

Arithmetic arithmeticObject = new Arithmetic(13, 42); 
int sum = arithmeticObject.add(); 
+0

+1僅僅表示使用或不使用靜態的結果 – 2010-10-18 21:44:40

+1

或者如果您喜歡花哨的代碼:'int sum =(new Arithmetic() ).add(13,42);' – 2010-10-18 21:51:10

相關問題