2015-04-06 141 views
-2

我很難理解靜態方法與Java中常規方法之間的區別。我知道已經有很多與此有關的問題,但是我沒有見過這些問題,它們展示了完成相同任務的靜態和非靜態方法的並排比較。Java:靜態方法與非靜態方法

這是我試圖改變爲常規方法的靜態方法。

public static String getString(Scanner sc, String prompt) 
{ 
    System.out.print(prompt); 
    String s = sc.next(); 
    sc.nextLine(); 
    return s; 
} 

而這正是我稱之爲另一類

String productCode = Validator.getString(sc, "Enter product code: "); 

我將如何改變這使它成爲一個常規的避孕方法和工作時,我打電話了嗎?

+3

你爲什麼將其更改爲一個非靜態方法?你期望達到什麼目的? –

+0

我想了解如何使用非靜態方法實現相同的結果。 – gjt123

+0

創建靜態方法的原因是因爲當您沒有該類的實例時,您想調用某個類的某些東西。除此之外,任何靜態方法都可以做到,非靜態方法可以做到。 –

回答

0

的方法可以是靜態的或非靜止的。當一個方法是靜態的時候屬於這個類。雖然非靜態方法屬於您的類的每個特定實例。也就是說,刪除關鍵字static,創建您的類的實例並在此對象上調用此方法,就是您想要的。

在代碼方面:

public String getString(Scanner sc, String prompt) 
{ 

} 

// Use the suitable constructor here. 
Validator validator = new Validator(); 

String productCode = validator.getString(sc, "Enter product code: "); 
1

實現:

public String getString(Scanner sc, String prompt) 
{ 
    System.out.print(prompt); 
    String s = sc.next(); 
    sc.nextLine(); 
    return s; 
} 

用法:

new Validator(...).getString(sc , "...");